@xyo-network/payload-builder 2.89.0-rc.1 → 2.89.0-rc.10

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.
Files changed (61) hide show
  1. package/dist/browser/Builder.d.cts +12 -17
  2. package/dist/browser/Builder.d.cts.map +1 -1
  3. package/dist/browser/Builder.d.mts +12 -17
  4. package/dist/browser/Builder.d.mts.map +1 -1
  5. package/dist/browser/Builder.d.ts +12 -17
  6. package/dist/browser/Builder.d.ts.map +1 -1
  7. package/dist/browser/BuilderBase.d.cts +17 -0
  8. package/dist/browser/BuilderBase.d.cts.map +1 -0
  9. package/dist/browser/BuilderBase.d.mts +17 -0
  10. package/dist/browser/BuilderBase.d.mts.map +1 -0
  11. package/dist/browser/BuilderBase.d.ts +17 -0
  12. package/dist/browser/BuilderBase.d.ts.map +1 -0
  13. package/dist/browser/Options.d.cts +10 -0
  14. package/dist/browser/Options.d.cts.map +1 -0
  15. package/dist/browser/Options.d.mts +10 -0
  16. package/dist/browser/Options.d.mts.map +1 -0
  17. package/dist/browser/Options.d.ts +10 -0
  18. package/dist/browser/Options.d.ts.map +1 -0
  19. package/dist/browser/index.cjs +78 -39
  20. package/dist/browser/index.cjs.map +1 -1
  21. package/dist/browser/index.d.cts +2 -0
  22. package/dist/browser/index.d.cts.map +1 -1
  23. package/dist/browser/index.d.mts +2 -0
  24. package/dist/browser/index.d.mts.map +1 -1
  25. package/dist/browser/index.d.ts +2 -0
  26. package/dist/browser/index.d.ts.map +1 -1
  27. package/dist/browser/index.js +79 -40
  28. package/dist/browser/index.js.map +1 -1
  29. package/dist/node/Builder.d.cts +12 -17
  30. package/dist/node/Builder.d.cts.map +1 -1
  31. package/dist/node/Builder.d.mts +12 -17
  32. package/dist/node/Builder.d.mts.map +1 -1
  33. package/dist/node/Builder.d.ts +12 -17
  34. package/dist/node/Builder.d.ts.map +1 -1
  35. package/dist/node/BuilderBase.d.cts +17 -0
  36. package/dist/node/BuilderBase.d.cts.map +1 -0
  37. package/dist/node/BuilderBase.d.mts +17 -0
  38. package/dist/node/BuilderBase.d.mts.map +1 -0
  39. package/dist/node/BuilderBase.d.ts +17 -0
  40. package/dist/node/BuilderBase.d.ts.map +1 -0
  41. package/dist/node/Options.d.cts +10 -0
  42. package/dist/node/Options.d.cts.map +1 -0
  43. package/dist/node/Options.d.mts +10 -0
  44. package/dist/node/Options.d.mts.map +1 -0
  45. package/dist/node/Options.d.ts +10 -0
  46. package/dist/node/Options.d.ts.map +1 -0
  47. package/dist/node/index.cjs +78 -39
  48. package/dist/node/index.cjs.map +1 -1
  49. package/dist/node/index.d.cts +2 -0
  50. package/dist/node/index.d.cts.map +1 -1
  51. package/dist/node/index.d.mts +2 -0
  52. package/dist/node/index.d.mts.map +1 -1
  53. package/dist/node/index.d.ts +2 -0
  54. package/dist/node/index.d.ts.map +1 -1
  55. package/dist/node/index.js +77 -39
  56. package/dist/node/index.js.map +1 -1
  57. package/package.json +8 -6
  58. package/src/Builder.ts +48 -60
  59. package/src/BuilderBase.ts +57 -0
  60. package/src/Options.ts +10 -0
  61. package/src/index.ts +2 -0
@@ -1,29 +1,27 @@
1
1
  import { Hash } from '@xylabs/hex';
2
- import { JsonObject } from '@xylabs/object';
2
+ import { AnyObject } from '@xylabs/object';
3
3
  import { Payload, WithMeta } from '@xyo-network/payload-model';
4
- export interface PayloadBuilderOptions<T> {
5
- fields?: Partial<T>;
6
- meta?: JsonObject;
7
- schema: string;
8
- }
9
- export declare class PayloadBuilder<T extends Payload = Payload> {
10
- private _$meta?;
11
- private _fields;
12
- private _schema;
13
- constructor({ schema, fields, meta }: PayloadBuilderOptions<T>);
14
- get schema(): string;
4
+ import { PayloadBuilderBase } from './BuilderBase';
5
+ import { PayloadBuilderOptions } from './Options';
6
+ export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> {
15
7
  static build<T extends Payload>(payload: T): Promise<WithMeta<T>>;
8
+ static dataHash<T extends Payload>(payload: T): Promise<Hash>;
16
9
  static dataHashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
10
+ static dataHashes(payloads: undefined): Promise<undefined>;
17
11
  static dataHashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
18
12
  static filterExclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
19
- static filterInclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
20
- static find<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
13
+ static filterExcludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
14
+ static filterIncludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
15
+ static findByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
16
+ static hash<T extends Payload>(payload: T): Promise<Hash>;
21
17
  /**
22
18
  * Creates an array of payload/hash tuples based on the payloads passed in
23
19
  * @param objs Any array of payloads
24
20
  * @returns An array of payload/hash tuples
25
21
  */
26
22
  static hashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
23
+ static hashes(payloads: undefined): Promise<undefined>;
24
+ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
27
25
  static toDataHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
28
26
  /**
29
27
  * Creates an object map of payload hashes to payloads based on the payloads passed in
@@ -31,9 +29,6 @@ export declare class PayloadBuilder<T extends Payload = Payload> {
31
29
  * @returns A map of hashes to payloads
32
30
  */
33
31
  static toHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
34
- $meta(fields?: JsonObject): this;
35
32
  build(): Promise<WithMeta<T>>;
36
- dataHashableFields(): T;
37
- fields(fields?: Partial<T>): this;
38
33
  }
39
34
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACrD,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAQ;gBAEX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAM9D,IAAI,MAAM,WAGT;WAEY,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAMnC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAS7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI5F;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQ9E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU;IAKnB,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYnC,kBAAkB;IAOlB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CAM3B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,cAAc,CACzB,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EACtC,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAC7D,SAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;WACnB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAOnC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WAItD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WACnD,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAY7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAIvF,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAIzF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WAC/C,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAKzD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQxE,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAWpC"}
@@ -1,29 +1,27 @@
1
1
  import { Hash } from '@xylabs/hex';
2
- import { JsonObject } from '@xylabs/object';
2
+ import { AnyObject } from '@xylabs/object';
3
3
  import { Payload, WithMeta } from '@xyo-network/payload-model';
4
- export interface PayloadBuilderOptions<T> {
5
- fields?: Partial<T>;
6
- meta?: JsonObject;
7
- schema: string;
8
- }
9
- export declare class PayloadBuilder<T extends Payload = Payload> {
10
- private _$meta?;
11
- private _fields;
12
- private _schema;
13
- constructor({ schema, fields, meta }: PayloadBuilderOptions<T>);
14
- get schema(): string;
4
+ import { PayloadBuilderBase } from './BuilderBase';
5
+ import { PayloadBuilderOptions } from './Options';
6
+ export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> {
15
7
  static build<T extends Payload>(payload: T): Promise<WithMeta<T>>;
8
+ static dataHash<T extends Payload>(payload: T): Promise<Hash>;
16
9
  static dataHashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
10
+ static dataHashes(payloads: undefined): Promise<undefined>;
17
11
  static dataHashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
18
12
  static filterExclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
19
- static filterInclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
20
- static find<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
13
+ static filterExcludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
14
+ static filterIncludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
15
+ static findByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
16
+ static hash<T extends Payload>(payload: T): Promise<Hash>;
21
17
  /**
22
18
  * Creates an array of payload/hash tuples based on the payloads passed in
23
19
  * @param objs Any array of payloads
24
20
  * @returns An array of payload/hash tuples
25
21
  */
26
22
  static hashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
23
+ static hashes(payloads: undefined): Promise<undefined>;
24
+ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
27
25
  static toDataHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
28
26
  /**
29
27
  * Creates an object map of payload hashes to payloads based on the payloads passed in
@@ -31,9 +29,6 @@ export declare class PayloadBuilder<T extends Payload = Payload> {
31
29
  * @returns A map of hashes to payloads
32
30
  */
33
31
  static toHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
34
- $meta(fields?: JsonObject): this;
35
32
  build(): Promise<WithMeta<T>>;
36
- dataHashableFields(): T;
37
- fields(fields?: Partial<T>): this;
38
33
  }
39
34
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACrD,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAQ;gBAEX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAM9D,IAAI,MAAM,WAGT;WAEY,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAMnC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAS7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI5F;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQ9E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU;IAKnB,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYnC,kBAAkB;IAOlB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CAM3B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,cAAc,CACzB,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EACtC,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAC7D,SAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;WACnB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAOnC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WAItD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WACnD,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAY7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAIvF,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAIzF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WAC/C,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAKzD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQxE,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAWpC"}
@@ -1,29 +1,27 @@
1
1
  import { Hash } from '@xylabs/hex';
2
- import { JsonObject } from '@xylabs/object';
2
+ import { AnyObject } from '@xylabs/object';
3
3
  import { Payload, WithMeta } from '@xyo-network/payload-model';
4
- export interface PayloadBuilderOptions<T> {
5
- fields?: Partial<T>;
6
- meta?: JsonObject;
7
- schema: string;
8
- }
9
- export declare class PayloadBuilder<T extends Payload = Payload> {
10
- private _$meta?;
11
- private _fields;
12
- private _schema;
13
- constructor({ schema, fields, meta }: PayloadBuilderOptions<T>);
14
- get schema(): string;
4
+ import { PayloadBuilderBase } from './BuilderBase';
5
+ import { PayloadBuilderOptions } from './Options';
6
+ export declare class PayloadBuilder<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> extends PayloadBuilderBase<T, O> {
15
7
  static build<T extends Payload>(payload: T): Promise<WithMeta<T>>;
8
+ static dataHash<T extends Payload>(payload: T): Promise<Hash>;
16
9
  static dataHashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
10
+ static dataHashes(payloads: undefined): Promise<undefined>;
17
11
  static dataHashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
18
12
  static filterExclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
19
- static filterInclude<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
20
- static find<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
13
+ static filterExcludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
14
+ static filterIncludeByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash[] | Hash): Promise<T[]>;
15
+ static findByDataHash<T extends Payload>(payloads: T[] | undefined, hash: Hash): Promise<T | undefined>;
16
+ static hash<T extends Payload>(payload: T): Promise<Hash>;
21
17
  /**
22
18
  * Creates an array of payload/hash tuples based on the payloads passed in
23
19
  * @param objs Any array of payloads
24
20
  * @returns An array of payload/hash tuples
25
21
  */
26
22
  static hashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]>;
23
+ static hashes(payloads: undefined): Promise<undefined>;
24
+ static hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>;
27
25
  static toDataHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
28
26
  /**
29
27
  * Creates an object map of payload hashes to payloads based on the payloads passed in
@@ -31,9 +29,6 @@ export declare class PayloadBuilder<T extends Payload = Payload> {
31
29
  * @returns A map of hashes to payloads
32
30
  */
33
31
  static toHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>>;
34
- $meta(fields?: JsonObject): this;
35
32
  build(): Promise<WithMeta<T>>;
36
- dataHashableFields(): T;
37
- fields(fields?: Partial<T>): this;
38
33
  }
39
34
  //# sourceMappingURL=Builder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;IACnB,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf;AAED,qBAAa,cAAc,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO;IACrD,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,OAAO,CAAiB;IAChC,OAAO,CAAC,OAAO,CAAQ;gBAEX,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC;IAM9D,IAAI,MAAM,WAGT;WAEY,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAMnC,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAS7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKvF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;IAI5F;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQ9E,KAAK,CAAC,MAAM,CAAC,EAAE,UAAU;IAKnB,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAYnC,kBAAkB;IAOlB,MAAM,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;CAM3B"}
1
+ {"version":3,"file":"Builder.d.ts","sourceRoot":"","sources":["../../src/Builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AAClC,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAE1C,OAAO,EAAE,OAAO,EAAmB,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAE/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,cAAc,CACzB,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EACtC,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,CAC7D,SAAQ,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC;WACnB,KAAK,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC;WAOnC,QAAQ,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;WAItD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS/E,UAAU,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WACnD,UAAU,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAY7D,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAIvF,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,uBAAuB,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,IAAI,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC;WAKjG,cAAc,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,iBAAU,EAAE,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,CAAC,GAAG,SAAS,CAAC;WAIzF,IAAI,CAAC,CAAC,SAAS,OAAO,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/D;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;WAS3E,MAAM,CAAC,QAAQ,EAAE,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;WAC/C,MAAM,CAAC,CAAC,SAAS,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;WAKzD,aAAa,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQlF;;;;OAIG;WACU,SAAS,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAQxE,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;CAWpC"}
@@ -0,0 +1,17 @@
1
+ import { AnyObject, JsonObject } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
4
+ import { PayloadBuilderOptions } from './Options';
5
+ export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> {
6
+ readonly options: O;
7
+ protected _$meta?: JsonObject;
8
+ protected _fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
9
+ protected _schema: Schema;
10
+ constructor(options: O);
11
+ $meta(meta?: JsonObject): this;
12
+ dataHashableFields(): Promise<T>;
13
+ fields(fields: Omit<WithMeta<T>, '$hash' | 'schema'> & Partial<Pick<WithMeta<T>, '$hash' | 'schema'>>): this;
14
+ hashableFields(): Promisable<T>;
15
+ schema(value: Schema): void;
16
+ }
17
+ //# sourceMappingURL=BuilderBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderBase.d.ts","sourceRoot":"","sources":["../../src/BuilderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAKvH,QAAQ,CAAC,OAAO,EAAE,CAAC;IAJ/B,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC7B,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEJ,OAAO,EAAE,CAAC;IAO/B,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU;IAKjB,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKtC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;IAerG,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC;IAQ/B,MAAM,CAAC,KAAK,EAAE,MAAM;CAGrB"}
@@ -0,0 +1,17 @@
1
+ import { AnyObject, JsonObject } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
4
+ import { PayloadBuilderOptions } from './Options';
5
+ export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> {
6
+ readonly options: O;
7
+ protected _$meta?: JsonObject;
8
+ protected _fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
9
+ protected _schema: Schema;
10
+ constructor(options: O);
11
+ $meta(meta?: JsonObject): this;
12
+ dataHashableFields(): Promise<T>;
13
+ fields(fields: Omit<WithMeta<T>, '$hash' | 'schema'> & Partial<Pick<WithMeta<T>, '$hash' | 'schema'>>): this;
14
+ hashableFields(): Promisable<T>;
15
+ schema(value: Schema): void;
16
+ }
17
+ //# sourceMappingURL=BuilderBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderBase.d.ts","sourceRoot":"","sources":["../../src/BuilderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAKvH,QAAQ,CAAC,OAAO,EAAE,CAAC;IAJ/B,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC7B,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEJ,OAAO,EAAE,CAAC;IAO/B,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU;IAKjB,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKtC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;IAerG,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC;IAQ/B,MAAM,CAAC,KAAK,EAAE,MAAM;CAGrB"}
@@ -0,0 +1,17 @@
1
+ import { AnyObject, JsonObject } from '@xylabs/object';
2
+ import { Promisable } from '@xylabs/promise';
3
+ import { Payload, Schema, WithMeta } from '@xyo-network/payload-model';
4
+ import { PayloadBuilderOptions } from './Options';
5
+ export declare class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> {
6
+ readonly options: O;
7
+ protected _$meta?: JsonObject;
8
+ protected _fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
9
+ protected _schema: Schema;
10
+ constructor(options: O);
11
+ $meta(meta?: JsonObject): this;
12
+ dataHashableFields(): Promise<T>;
13
+ fields(fields: Omit<WithMeta<T>, '$hash' | 'schema'> & Partial<Pick<WithMeta<T>, '$hash' | 'schema'>>): this;
14
+ hashableFields(): Promisable<T>;
15
+ schema(value: Schema): void;
16
+ }
17
+ //# sourceMappingURL=BuilderBase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderBase.d.ts","sourceRoot":"","sources":["../../src/BuilderBase.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAE5C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAA;AAEtE,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AAEjD,qBAAa,kBAAkB,CAAC,CAAC,SAAS,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,qBAAqB,CAAC,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC;IAKvH,QAAQ,CAAC,OAAO,EAAE,CAAC;IAJ/B,SAAS,CAAC,MAAM,CAAC,EAAE,UAAU,CAAA;IAC7B,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACzD,SAAS,CAAC,OAAO,EAAE,MAAM,CAAA;gBAEJ,OAAO,EAAE,CAAC;IAO/B,KAAK,CAAC,IAAI,CAAC,EAAE,UAAU;IAKjB,kBAAkB,IAAI,OAAO,CAAC,CAAC,CAAC;IAKtC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC,CAAC;IAerG,cAAc,IAAI,UAAU,CAAC,CAAC,CAAC;IAQ/B,MAAM,CAAC,KAAK,EAAE,MAAM;CAGrB"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from '@xylabs/logger';
2
+ import { JsonObject } from '@xylabs/object';
3
+ import { Schema } from '@xyo-network/payload-model';
4
+ export interface PayloadBuilderOptions<T> {
5
+ readonly fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
6
+ readonly logger?: Logger;
7
+ readonly meta?: JsonObject;
8
+ readonly schema: Schema;
9
+ }
10
+ //# sourceMappingURL=Options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../../src/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from '@xylabs/logger';
2
+ import { JsonObject } from '@xylabs/object';
3
+ import { Schema } from '@xyo-network/payload-model';
4
+ export interface PayloadBuilderOptions<T> {
5
+ readonly fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
6
+ readonly logger?: Logger;
7
+ readonly meta?: JsonObject;
8
+ readonly schema: Schema;
9
+ }
10
+ //# sourceMappingURL=Options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../../src/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB"}
@@ -0,0 +1,10 @@
1
+ import { Logger } from '@xylabs/logger';
2
+ import { JsonObject } from '@xylabs/object';
3
+ import { Schema } from '@xyo-network/payload-model';
4
+ export interface PayloadBuilderOptions<T> {
5
+ readonly fields?: Omit<T, 'schema' | '$hash' | '$meta'>;
6
+ readonly logger?: Logger;
7
+ readonly meta?: JsonObject;
8
+ readonly schema: Schema;
9
+ }
10
+ //# sourceMappingURL=Options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Options.d.ts","sourceRoot":"","sources":["../../src/Options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAA;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAA;AAEnD,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC,CAAA;IACvD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,CAAC,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB"}
@@ -21,36 +21,85 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
21
21
  // src/index.ts
22
22
  var src_exports = {};
23
23
  __export(src_exports, {
24
- PayloadBuilder: () => PayloadBuilder
24
+ PayloadBuilder: () => PayloadBuilder,
25
+ PayloadBuilderBase: () => PayloadBuilderBase
25
26
  });
26
27
  module.exports = __toCommonJS(src_exports);
27
28
 
28
29
  // src/Builder.ts
30
+ var import_hash2 = require("@xyo-network/hash");
31
+
32
+ // src/BuilderBase.ts
29
33
  var import_assert = require("@xylabs/assert");
30
34
  var import_hash = require("@xyo-network/hash");
31
- var PayloadBuilder = class _PayloadBuilder {
35
+ var PayloadBuilderBase = class {
32
36
  static {
33
- __name(this, "PayloadBuilder");
37
+ __name(this, "PayloadBuilderBase");
34
38
  }
39
+ options;
35
40
  _$meta;
36
- _fields = {};
41
+ _fields;
37
42
  _schema;
38
- constructor({ schema, fields, meta }) {
43
+ constructor(options) {
44
+ this.options = options;
45
+ const { schema, fields, meta } = options;
39
46
  this._schema = schema;
40
- this._fields = fields ?? {};
47
+ this._fields = fields;
41
48
  this._$meta = meta;
42
49
  }
43
- get schema() {
44
- this._schema = this._schema ?? this._fields["schema"];
45
- return this._schema;
50
+ $meta(meta) {
51
+ this._$meta = meta ?? this._fields.$meta;
52
+ return this;
53
+ }
54
+ async dataHashableFields() {
55
+ return (0, import_hash.deepOmitPrefixedFields)(await this.hashableFields(), "$");
56
+ }
57
+ //we do not require sending in $hash since it will be generated anyway
58
+ fields(fields) {
59
+ if (fields) {
60
+ const { $meta, $hash, schema, ...fieldsOnly } = fields;
61
+ if ($meta) {
62
+ this.$meta($meta);
63
+ }
64
+ if (schema) {
65
+ this.schema(schema);
66
+ }
67
+ this._fields = {
68
+ ...this._fields,
69
+ ...(0, import_hash.removeEmptyFields)(fieldsOnly)
70
+ };
71
+ }
72
+ return this;
73
+ }
74
+ hashableFields() {
75
+ const schema = (0, import_assert.assertEx)(this._schema, "Payload: Missing Schema");
76
+ return {
77
+ ...(0, import_hash.removeEmptyFields)((0, import_hash.deepOmitPrefixedFields)(this._fields ?? {}, "_")),
78
+ schema
79
+ };
80
+ }
81
+ schema(value) {
82
+ this._schema = value;
83
+ }
84
+ };
85
+
86
+ // src/Builder.ts
87
+ var PayloadBuilder = class _PayloadBuilder extends PayloadBuilderBase {
88
+ static {
89
+ __name(this, "PayloadBuilder");
46
90
  }
47
91
  static async build(payload) {
92
+ const { schema, $hash, $meta, ...fields } = payload;
48
93
  const builder = new _PayloadBuilder({
94
+ fields,
95
+ meta: $meta,
49
96
  schema: payload.schema
50
97
  });
51
- builder.fields(payload);
52
98
  return await builder.build();
53
99
  }
100
+ static async dataHash(payload) {
101
+ return (await this.build(payload)).$hash;
102
+ }
54
103
  static async dataHashPairs(payloads) {
55
104
  return await Promise.all(payloads.map(async (payload) => {
56
105
  const built = await _PayloadBuilder.build(payload);
@@ -61,25 +110,31 @@ var PayloadBuilder = class _PayloadBuilder {
61
110
  }));
62
111
  }
63
112
  static async dataHashes(payloads) {
64
- return await Promise.all(payloads.map(async (payload) => {
113
+ return payloads ? await Promise.all(payloads.map(async (payload) => {
65
114
  const built = await _PayloadBuilder.build(payload);
66
115
  return built.$hash;
67
- }));
116
+ })) : void 0;
68
117
  }
69
118
  static async filterExclude(payloads = [], hash) {
119
+ return await import_hash2.PayloadHasher.filterExcludeByHash(await this.filterExcludeByDataHash(payloads, hash), hash);
120
+ }
121
+ static async filterExcludeByDataHash(payloads = [], hash) {
70
122
  const hashes = Array.isArray(hash) ? hash : [
71
123
  hash
72
124
  ];
73
- return (await this.hashPairs(payloads)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0]);
125
+ return (await this.dataHashPairs(payloads)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0]);
74
126
  }
75
- static async filterInclude(payloads = [], hash) {
127
+ static async filterIncludeByDataHash(payloads = [], hash) {
76
128
  const hashes = Array.isArray(hash) ? hash : [
77
129
  hash
78
130
  ];
79
- return (await this.hashPairs(payloads)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0]);
131
+ return (await this.dataHashPairs(payloads)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0]);
80
132
  }
81
- static async find(payloads = [], hash) {
82
- return (await this.hashPairs(payloads)).find(([_, objHash]) => objHash === hash)?.[0];
133
+ static async findByDataHash(payloads = [], hash) {
134
+ return (await this.dataHashPairs(payloads)).find(([_, objHash]) => objHash === hash)?.[0];
135
+ }
136
+ static async hash(payload) {
137
+ return await import_hash2.PayloadHasher.hash(payload);
83
138
  }
84
139
  /**
85
140
  * Creates an array of payload/hash tuples based on the payloads passed in
@@ -91,10 +146,13 @@ var PayloadBuilder = class _PayloadBuilder {
91
146
  const built = await _PayloadBuilder.build(payload);
92
147
  return [
93
148
  built,
94
- await import_hash.PayloadHasher.hashAsync(built)
149
+ await _PayloadBuilder.hash(built)
95
150
  ];
96
151
  }));
97
152
  }
153
+ static async hashes(payloads) {
154
+ return await import_hash2.PayloadHasher.hashes(payloads);
155
+ }
98
156
  static async toDataHashMap(objs) {
99
157
  const result = {};
100
158
  for (const pair of await this.dataHashPairs(objs)) {
@@ -114,13 +172,9 @@ var PayloadBuilder = class _PayloadBuilder {
114
172
  }
115
173
  return result;
116
174
  }
117
- $meta(fields) {
118
- this._$meta = fields;
119
- return this;
120
- }
121
175
  async build() {
122
- const dataHashableFields = this.dataHashableFields();
123
- const $hash = await import_hash.PayloadHasher.hashAsync(dataHashableFields);
176
+ const dataHashableFields = await this.dataHashableFields();
177
+ const $hash = await _PayloadBuilder.hash(dataHashableFields);
124
178
  const hashableFields = {
125
179
  ...dataHashableFields,
126
180
  $hash
@@ -130,20 +184,5 @@ var PayloadBuilder = class _PayloadBuilder {
130
184
  }
131
185
  return hashableFields;
132
186
  }
133
- dataHashableFields() {
134
- return {
135
- ...(0, import_hash.removeEmptyFields)((0, import_hash.deepOmitPrefixedFields)((0, import_hash.deepOmitPrefixedFields)(this._fields, "$"), "_")),
136
- schema: (0, import_assert.assertEx)(this.schema, "Payload: Missing Schema")
137
- };
138
- }
139
- fields(fields) {
140
- if (fields) {
141
- this._fields = {
142
- ...this._fields,
143
- ...(0, import_hash.removeEmptyFields)(fields)
144
- };
145
- }
146
- return this;
147
- }
148
187
  };
149
188
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/index.ts","../../src/Builder.ts"],"sourcesContent":["export * from './Builder'\n","import { assertEx } from '@xylabs/assert'\nimport { Hash } from '@xylabs/hex'\nimport { JsonObject } from '@xylabs/object'\nimport { deepOmitPrefixedFields, PayloadHasher, removeEmptyFields } from '@xyo-network/hash'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\n\nexport interface PayloadBuilderOptions<T> {\n fields?: Partial<T>\n meta?: JsonObject\n schema: string\n}\n\nexport class PayloadBuilder<T extends Payload = Payload> {\n private _$meta?: JsonObject\n private _fields: Partial<T> = {}\n private _schema: string\n\n constructor({ schema, fields, meta }: PayloadBuilderOptions<T>) {\n this._schema = schema\n this._fields = fields ?? {}\n this._$meta = meta\n }\n\n get schema() {\n this._schema = this._schema ?? this._fields['schema']\n return this._schema\n }\n\n static async build<T extends Payload>(payload: T) {\n const builder = new PayloadBuilder<T>({ schema: payload.schema })\n builder.fields(payload)\n return await builder.build()\n }\n\n static async dataHashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]> {\n return await Promise.all(\n payloads.map(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return [built, built.$hash]\n }),\n )\n }\n\n static async dataHashes<T extends Payload>(payloads: T[]): Promise<Hash[]> {\n return await Promise.all(\n payloads.map(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return built.$hash\n }),\n )\n }\n\n static async filterExclude<T extends Payload>(payloads: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(payloads)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async filterInclude<T extends Payload>(payloads: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.hashPairs(payloads)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async find<T extends Payload>(payloads: T[] = [], hash: Hash): Promise<T | undefined> {\n return (await this.hashPairs(payloads)).find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n /**\n * Creates an array of payload/hash tuples based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload/hash tuples\n */\n static async hashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]> {\n return await Promise.all(\n payloads.map<Promise<[WithMeta<T>, Hash]>>(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return [built, await PayloadHasher.hashAsync(built)]\n }),\n )\n }\n\n static async toDataHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<Hash, T> = {}\n for (const pair of await this.dataHashPairs(objs)) {\n result[pair[1]] = pair[0]\n }\n return result\n }\n\n /**\n * Creates an object map of payload hashes to payloads based on the payloads passed in\n * @param objs Any array of payloads\n * @returns A map of hashes to payloads\n */\n static async toHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<Hash, T> = {}\n for (const pair of await this.hashPairs(objs)) {\n result[pair[1]] = pair[0]\n }\n return result\n }\n\n $meta(fields?: JsonObject) {\n this._$meta = fields\n return this\n }\n\n async build(): Promise<WithMeta<T>> {\n const dataHashableFields = this.dataHashableFields()\n const $hash = await PayloadHasher.hashAsync(dataHashableFields)\n const hashableFields: PayloadWithMeta = { ...dataHashableFields, $hash }\n\n //only add $meta if it exists and has at least one field\n if (this._$meta && Object.keys(this._$meta).length > 0) {\n hashableFields['$meta'] = this._$meta\n }\n return hashableFields as WithMeta<T>\n }\n\n dataHashableFields() {\n return {\n ...removeEmptyFields(deepOmitPrefixedFields(deepOmitPrefixedFields(this._fields, '$'), '_')),\n schema: assertEx(this.schema, 'Payload: Missing Schema'),\n } as T\n }\n\n fields(fields?: Partial<T>) {\n if (fields) {\n this._fields = { ...this._fields, ...removeEmptyFields(fields) }\n }\n return this\n }\n}\n"],"mappings":"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","names":["PayloadBuilder","_$meta","_fields","_schema","constructor","schema","fields","meta","build","payload","builder","dataHashPairs","payloads","Promise","all","map","built","$hash","dataHashes","filterExclude","hash","hashes","Array","isArray","hashPairs","filter","_","objHash","includes","pair","filterInclude","find","PayloadHasher","hashAsync","toDataHashMap","objs","result","toHashMap","$meta","dataHashableFields","hashableFields","Object","keys","length","removeEmptyFields","deepOmitPrefixedFields","assertEx"]}
1
+ {"version":3,"sources":["../../src/index.ts","../../src/Builder.ts","../../src/BuilderBase.ts"],"sourcesContent":["export * from './Builder'\nexport * from './BuilderBase'\nexport * from './Options'\n","import { Hash } from '@xylabs/hex'\nimport { AnyObject } from '@xylabs/object'\nimport { PayloadHasher } from '@xyo-network/hash'\nimport { Payload, PayloadWithMeta, WithMeta } from '@xyo-network/payload-model'\n\nimport { PayloadBuilderBase } from './BuilderBase'\nimport { PayloadBuilderOptions } from './Options'\n\nexport class PayloadBuilder<\n T extends Payload = Payload<AnyObject>,\n O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>,\n> extends PayloadBuilderBase<T, O> {\n static async build<T extends Payload>(payload: T) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { schema, $hash, $meta, ...fields } = payload as WithMeta<T>\n const builder = new PayloadBuilder<T>({ fields: fields as T, meta: $meta, schema: payload.schema })\n return await builder.build()\n }\n\n static async dataHash<T extends Payload>(payload: T): Promise<Hash> {\n return (await this.build(payload)).$hash\n }\n\n static async dataHashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]> {\n return await Promise.all(\n payloads.map(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return [built, built.$hash]\n }),\n )\n }\n\n static async dataHashes(payloads: undefined): Promise<undefined>\n static async dataHashes<T extends Payload>(payloads: T[]): Promise<Hash[]>\n static async dataHashes<T extends Payload>(payloads?: T[]): Promise<Hash[] | undefined> {\n return payloads\n ? await Promise.all(\n payloads.map(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return built.$hash\n }),\n )\n : undefined\n }\n\n static async filterExclude<T extends Payload>(payloads: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n return await PayloadHasher.filterExcludeByHash(await this.filterExcludeByDataHash(payloads, hash), hash)\n }\n\n static async filterExcludeByDataHash<T extends Payload>(payloads: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.dataHashPairs(payloads)).filter(([_, objHash]) => !hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async filterIncludeByDataHash<T extends Payload>(payloads: T[] = [], hash: Hash[] | Hash): Promise<T[]> {\n const hashes = Array.isArray(hash) ? hash : [hash]\n return (await this.dataHashPairs(payloads)).filter(([_, objHash]) => hashes.includes(objHash))?.map((pair) => pair[0])\n }\n\n static async findByDataHash<T extends Payload>(payloads: T[] = [], hash: Hash): Promise<T | undefined> {\n return (await this.dataHashPairs(payloads)).find(([_, objHash]) => objHash === hash)?.[0]\n }\n\n static async hash<T extends Payload>(payload: T): Promise<Hash> {\n return await PayloadHasher.hash(payload)\n }\n\n /**\n * Creates an array of payload/hash tuples based on the payloads passed in\n * @param objs Any array of payloads\n * @returns An array of payload/hash tuples\n */\n static async hashPairs<T extends Payload>(payloads: T[]): Promise<[WithMeta<T>, Hash][]> {\n return await Promise.all(\n payloads.map<Promise<[WithMeta<T>, Hash]>>(async (payload) => {\n const built = await PayloadBuilder.build(payload)\n return [built, await PayloadBuilder.hash(built)]\n }),\n )\n }\n\n static async hashes(payloads: undefined): Promise<undefined>\n static async hashes<T extends Payload>(payloads: T[]): Promise<Hash[]>\n static async hashes<T extends Payload>(payloads?: T[]): Promise<Hash[] | undefined> {\n return await PayloadHasher.hashes(payloads)\n }\n\n static async toDataHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<Hash, T> = {}\n for (const pair of await this.dataHashPairs(objs)) {\n result[pair[1]] = pair[0]\n }\n return result\n }\n\n /**\n * Creates an object map of payload hashes to payloads based on the payloads passed in\n * @param objs Any array of payloads\n * @returns A map of hashes to payloads\n */\n static async toHashMap<T extends Payload>(objs: T[]): Promise<Record<Hash, T>> {\n const result: Record<Hash, T> = {}\n for (const pair of await this.hashPairs(objs)) {\n result[pair[1]] = pair[0]\n }\n return result\n }\n\n async build(): Promise<WithMeta<T>> {\n const dataHashableFields = await this.dataHashableFields()\n const $hash = await PayloadBuilder.hash(dataHashableFields)\n const hashableFields: PayloadWithMeta = { ...dataHashableFields, $hash }\n\n //only add $meta if it exists and has at least one field\n if (this._$meta && Object.keys(this._$meta).length > 0) {\n hashableFields['$meta'] = this._$meta\n }\n return hashableFields as WithMeta<T>\n }\n}\n","import { assertEx } from '@xylabs/assert'\nimport { AnyObject, JsonObject } from '@xylabs/object'\nimport { Promisable } from '@xylabs/promise'\nimport { deepOmitPrefixedFields, removeEmptyFields } from '@xyo-network/hash'\nimport { Payload, Schema, WithMeta } from '@xyo-network/payload-model'\n\nimport { PayloadBuilderOptions } from './Options'\n\nexport class PayloadBuilderBase<T extends Payload = Payload<AnyObject>, O extends PayloadBuilderOptions<T> = PayloadBuilderOptions<T>> {\n protected _$meta?: JsonObject\n protected _fields?: Omit<T, 'schema' | '$hash' | '$meta'>\n protected _schema: Schema\n\n constructor(readonly options: O) {\n const { schema, fields, meta } = options\n this._schema = schema\n this._fields = fields\n this._$meta = meta\n }\n\n $meta(meta?: JsonObject) {\n this._$meta = meta ?? (this._fields as WithMeta<T>).$meta\n return this\n }\n\n async dataHashableFields(): Promise<T> {\n return deepOmitPrefixedFields(await this.hashableFields(), '$')\n }\n\n //we do not require sending in $hash since it will be generated anyway\n fields(fields: Omit<WithMeta<T>, '$hash' | 'schema'> & Partial<Pick<WithMeta<T>, '$hash' | 'schema'>>) {\n if (fields) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { $meta, $hash, schema, ...fieldsOnly } = fields as WithMeta<T>\n if ($meta) {\n this.$meta($meta)\n }\n if (schema) {\n this.schema(schema)\n }\n this._fields = { ...this._fields, ...removeEmptyFields(fieldsOnly) }\n }\n return this\n }\n\n hashableFields(): Promisable<T> {\n const schema = assertEx(this._schema, 'Payload: Missing Schema')\n return {\n ...removeEmptyFields(deepOmitPrefixedFields(this._fields ?? {}, '_')),\n schema,\n } as T\n }\n\n schema(value: Schema) {\n this._schema = value\n }\n}\n"],"mappings":"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","names":["import_hash","PayloadBuilderBase","_$meta","_fields","_schema","constructor","options","schema","fields","meta","$meta","dataHashableFields","deepOmitPrefixedFields","hashableFields","$hash","fieldsOnly","removeEmptyFields","assertEx","value","PayloadBuilder","PayloadBuilderBase","build","payload","schema","$hash","$meta","fields","builder","meta","dataHash","dataHashPairs","payloads","Promise","all","map","built","dataHashes","undefined","filterExclude","hash","PayloadHasher","filterExcludeByHash","filterExcludeByDataHash","hashes","Array","isArray","filter","_","objHash","includes","pair","filterIncludeByDataHash","findByDataHash","find","hashPairs","toDataHashMap","objs","result","toHashMap","dataHashableFields","hashableFields","_$meta","Object","keys","length"]}
@@ -1,2 +1,4 @@
1
1
  export * from './Builder';
2
+ export * from './BuilderBase';
3
+ export * from './Options';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
@@ -1,2 +1,4 @@
1
1
  export * from './Builder';
2
+ export * from './BuilderBase';
3
+ export * from './Options';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}
@@ -1,2 +1,4 @@
1
1
  export * from './Builder';
2
+ export * from './BuilderBase';
3
+ export * from './Options';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAA;AACzB,cAAc,eAAe,CAAA;AAC7B,cAAc,WAAW,CAAA"}