@jackchuka/gql-ingest 2.1.0 → 2.2.0

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.
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,UAAW,SAAQ,gBAAgB;CAEnD;AAED,eAAO,MAAM,oBAAoB,EAAE,WAMlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,wBAIrC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAK5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAmB9D;AAiBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,gBAAgB,GAC7B,wBAAwB,CAiB1B;AAED,wBAAgB,cAAc,CAC5B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,gBAAgB,GAC7B,WAAW,CAOb"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,KAAK,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,kBAAkB,EAAE,wBAAwB,CAAC;IAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC3C,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,UAAW,SAAQ,gBAAgB;CAEnD;AAED,eAAO,MAAM,oBAAoB,EAAE,WAMlC,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,wBAIrC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAK5B,CAAC;AAEF,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,gBAAgB,CAkB9D;AAiBD,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,gBAAgB,GAC7B,wBAAwB,CAiB1B;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,gBAAgB,GAAG,WAAW,CAO9F"}
@@ -1 +1 @@
1
- {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../src/dependency-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,sBAAsB,CAAU;gBAE5B,QAAQ,EAAE,MAAM,EAAE,EAAE,YAAY,GAAE,eAAoB,EAAE,sBAAsB,GAAE,OAAe;IAM3G,qBAAqB,IAAI,aAAa,EAAE;IAgDxC,oBAAoB,IAAI,MAAM,EAAE;IAwBhC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAM3C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;CAG9C"}
1
+ {"version":3,"file":"dependency-resolver.d.ts","sourceRoot":"","sources":["../src/dependency-resolver.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,sBAAsB,CAAU;gBAGtC,QAAQ,EAAE,MAAM,EAAE,EAClB,YAAY,GAAE,eAAoB,EAClC,sBAAsB,GAAE,OAAe;IAOzC,qBAAqB,IAAI,aAAa,EAAE;IAiDxC,oBAAoB,IAAI,MAAM,EAAE;IAoBhC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;IAM3C,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE;CAG9C"}
@@ -1 +1 @@
1
- {"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAwB,WAAW,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,OAAO,CAAU;gBAGvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,gBAAgB,EAC1B,OAAO,GAAE,OAAe;IASpB,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,GAAG,CAAC;IA6Ff,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,KAAK;IAIb,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAG3C"}
1
+ {"version":3,"file":"graphql-client.d.ts","sourceRoot":"","sources":["../src/graphql-client.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAwB,WAAW,EAAE,MAAM,UAAU,CAAC;AAE7D,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,OAAO,CAAC,CAAmB;IACnC,OAAO,CAAC,OAAO,CAAU;gBAGvB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,gBAAgB,EAC1B,OAAO,GAAE,OAAe;IASpB,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC9B,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,GAAG,CAAC;IAsFf,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,KAAK;IAIb,UAAU,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;CAG3C"}
package/dist/mapper.d.ts CHANGED
@@ -6,7 +6,7 @@ export interface MappingConfig {
6
6
  dataFile?: string;
7
7
  dataFormat?: string;
8
8
  graphqlFile: string;
9
- mapping: Record<string, string | any>;
9
+ mapping: Record<string, unknown>;
10
10
  }
11
11
  export declare class DataMapper {
12
12
  private client;
@@ -1 +1 @@
1
- {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,CAAC,CAAC;CACvC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAC,CAAS;gBAG9B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,GAAE,MAAsB,EAChC,OAAO,CAAC,EAAE,gBAAgB,EAC1B,OAAO,GAAE,OAAe,EACxB,cAAc,CAAC,EAAE,MAAM;IASzB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA4ChE,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,wBAAwB,EACzC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;YAyDF,uBAAuB;YAwCvB,uBAAuB;IA8ErC,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IA0CvB,OAAO,CAAC,oBAAoB;IA4B5B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,YAAY;IAmEpB,UAAU,IAAI,gBAAgB;CAG/B"}
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEjE,MAAM,WAAW,aAAa;IAE5B,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,cAAc,CAAC,CAAS;gBAG9B,MAAM,EAAE,oBAAoB,EAC5B,QAAQ,GAAE,MAAsB,EAChC,OAAO,CAAC,EAAE,gBAAgB,EAC1B,OAAO,GAAE,OAAe,EACxB,cAAc,CAAC,EAAE,MAAM;IASzB,gBAAgB,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAwChE,aAAa,CACjB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,wBAAwB,EACzC,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,IAAI,CAAC;YA+CF,uBAAuB;YAmCvB,uBAAuB;IAwErC,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAqCzB,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,eAAe;IAoCvB,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,YAAY;IA2DpB,UAAU,IAAI,gBAAgB;CAG/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAoB;;IAgBnC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAW/C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOhD,gBAAgB,IAAI,iBAAiB;IAKrC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,MAAM;IAKxB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1C,yBAAyB,IAAI,MAAM;IAMnC,aAAa,IAAI,MAAM;IAKvB,eAAe,IAAI,MAAM;CA2C1B"}
1
+ {"version":3,"file":"metrics.d.ts","sourceRoot":"","sources":["../src/metrics.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC1C,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,OAAO,CAAoB;;IAgBnC,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAW/C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IASvC,sBAAsB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAOhD,gBAAgB,IAAI,iBAAiB;IAKrC,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAI/D,iBAAiB,IAAI,MAAM;IAI3B,cAAc,IAAI,MAAM;IAKxB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAI7C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1C,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAK1C,yBAAyB,IAAI,MAAM;IAMnC,aAAa,IAAI,MAAM;IAKvB,eAAe,IAAI,MAAM;CAyC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"data-reader.d.ts","sourceRoot":"","sources":["../../src/readers/data-reader.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,UAAU;IAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAE3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAMrC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAoB;IAE1C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI/C,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU;IAuB/D,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAOvC"}
1
+ {"version":3,"file":"data-reader.d.ts","sourceRoot":"","sources":["../../src/readers/data-reader.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,8BAAsB,UAAU;IAC9B,QAAQ,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAEvD;;OAEG;IACH,QAAQ,CAAC,sBAAsB,IAAI,MAAM,EAAE;IAE3C;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;CAIrC;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAC,OAAO,CAAoB;IAE1C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAI/C,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU;IAqB/D,MAAM,CAAC,mBAAmB,IAAI,MAAM,EAAE;CAOvC"}
@@ -1 +1 @@
1
- {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/readers/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,UAAW,SAAQ,UAAU;IACxC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAkBrD"}
1
+ {"version":3,"file":"json.d.ts","sourceRoot":"","sources":["../../src/readers/json.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,UAAW,SAAQ,UAAU;IACxC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAgBrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/readers/jsonl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,WAAY,SAAQ,UAAU;IACzC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAmBrD"}
1
+ {"version":3,"file":"jsonl.d.ts","sourceRoot":"","sources":["../../src/readers/jsonl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,WAAY,SAAQ,UAAU;IACzC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAoBrD"}
@@ -1 +1 @@
1
- {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/readers/yaml.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,UAAW,SAAQ,UAAU;IACxC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAkBrD"}
1
+ {"version":3,"file":"yaml.d.ts","sourceRoot":"","sources":["../../src/readers/yaml.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAEpD,qBAAa,UAAW,SAAQ,UAAU;IACxC,sBAAsB,IAAI,MAAM,EAAE;IAI5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAgBrD"}
package/package.json CHANGED
@@ -1,52 +1,58 @@
1
1
  {
2
2
  "name": "@jackchuka/gql-ingest",
3
- "version": "2.1.0",
3
+ "version": "2.2.0",
4
4
  "description": "A CLI tool for ingesting data from CSV files into a GraphQL API",
5
- "type": "module",
6
- "main": "dist/cli.js",
7
- "bin": {
8
- "gql-ingest": "bin/cli.js"
9
- },
10
- "scripts": {
11
- "build": "node esbuild.config.js",
12
- "build:types": "tsc --emitDeclarationOnly",
13
- "build:all": "npm run build && npm run build:types",
14
- "dev": "ts-node src/cli.ts",
15
- "test": "jest",
16
- "test:watch": "jest --watch",
17
- "prepublishOnly": "npm run build:all"
18
- },
19
5
  "keywords": [
20
- "graphql",
6
+ "api",
21
7
  "cli",
22
8
  "csv",
23
- "ingest",
24
- "api"
9
+ "graphql",
10
+ "ingest"
25
11
  ],
26
- "author": "jackchuka",
27
12
  "license": "MIT",
13
+ "author": "jackchuka",
28
14
  "repository": {
29
15
  "type": "git",
30
16
  "url": "https://github.com/jackchuka/gql-ingest.git"
31
17
  },
18
+ "bin": {
19
+ "gql-ingest": "bin/cli.js"
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ],
24
+ "type": "module",
25
+ "main": "dist/cli.js",
32
26
  "dependencies": {
33
27
  "commander": "^14.0.0",
34
28
  "csv-parser": "^3.0.0",
29
+ "graphql": "16.12.0",
35
30
  "graphql-request": "^7.2.0",
36
31
  "js-yaml": "^4.1.0"
37
32
  },
38
33
  "devDependencies": {
39
34
  "@types/jest": "^30.0.0",
40
35
  "@types/js-yaml": "^4.0.9",
41
- "@types/node": "^24.0.4",
36
+ "@types/node": "^25.0.2",
42
37
  "esbuild": "^0.27.0",
43
38
  "jest": "^30.0.3",
39
+ "oxfmt": "^0.20.0",
40
+ "oxlint": "^1.35.0",
41
+ "oxlint-tsgolint": "^0.10.0",
44
42
  "ts-jest": "^29.4.0",
45
43
  "ts-node": "^10.9.0",
46
44
  "typescript": "^5.3.0"
47
45
  },
48
- "files": [
49
- "dist/**/*",
50
- "src/**/*"
51
- ]
52
- }
46
+ "packageManager": "pnpm@8.14.1",
47
+ "scripts": {
48
+ "lint": "oxlint --type-aware --tsconfig ./tsconfig.json",
49
+ "lint:fix": "oxlint --fix --type-aware --tsconfig ./tsconfig.json",
50
+ "fmt": "oxfmt",
51
+ "build": "node esbuild.config.js",
52
+ "build:types": "tsc --emitDeclarationOnly",
53
+ "build:all": "pnpm run build && pnpm run build:types",
54
+ "dev": "ts-node src/cli.ts",
55
+ "test": "jest",
56
+ "test:watch": "jest --watch"
57
+ }
58
+ }
package/src/cli.ts DELETED
@@ -1,187 +0,0 @@
1
- import { Command } from "commander";
2
- import { GraphQLClientWrapper } from "./graphql-client";
3
- import { DataMapper } from "./mapper";
4
- import { MetricsCollector } from "./metrics";
5
- import { loadConfig, getEntityConfig, getRetryConfig } from "./config";
6
- import { DependencyResolver } from "./dependency-resolver";
7
- import { basename } from "path";
8
-
9
- // Utility function to chunk array into smaller arrays
10
- function chunkArray<T>(array: T[], chunkSize: number): T[][] {
11
- if (chunkSize <= 0) return [array];
12
- const chunks: T[][] = [];
13
- for (let i = 0; i < array.length; i += chunkSize) {
14
- chunks.push(array.slice(i, i + chunkSize));
15
- }
16
- return chunks;
17
- }
18
-
19
- const program = new Command();
20
-
21
- program
22
- .name("gql-ingest")
23
- .description(
24
- "A CLI tool for ingesting data from CSV files into a GraphQL API"
25
- )
26
- .version(require("../package.json").version);
27
-
28
- program
29
- .requiredOption("-e, --endpoint <url>", "GraphQL endpoint URL")
30
- .requiredOption(
31
- "-c, --config <path>",
32
- "Path to configuration directory (containing data/, graphql/, mappings/ subdirectories)"
33
- )
34
- .option(
35
- "-n, --entities <entities>",
36
- "Comma-separated list of specific entities to process (e.g., users,products)"
37
- )
38
- .option(
39
- "-h, --headers <headers>",
40
- "JSON string of headers to include in requests"
41
- )
42
- .option("-v, --verbose", "Show detailed request results and responses")
43
- .option(
44
- "-f, --format <format>",
45
- "Override data format detection (csv, json, yaml, jsonl)"
46
- )
47
- .action(async (options) => {
48
- try {
49
- console.log("Starting seed data generation...");
50
-
51
- // Parse headers if provided
52
- const headers = options.headers ? JSON.parse(options.headers) : {};
53
-
54
- // Initialize metrics collector
55
- const metrics = new MetricsCollector();
56
-
57
- // Initialize GraphQL client
58
- const client = new GraphQLClientWrapper(
59
- options.endpoint,
60
- headers,
61
- metrics,
62
- options.verbose
63
- );
64
-
65
- // Load configuration
66
- const config = loadConfig(options.config);
67
-
68
- // Initialize data mapper
69
- const mapper = new DataMapper(
70
- client,
71
- process.cwd(),
72
- metrics,
73
- options.verbose,
74
- options.format
75
- );
76
-
77
- // Parse entities filter if provided
78
- const entityFilter = options.entities
79
- ? options.entities.split(",").map((e: string) => e.trim())
80
- : undefined;
81
-
82
- // Discover all mapping files dynamically
83
- const mappingPaths = mapper.discoverMappings(
84
- options.config,
85
- entityFilter
86
- );
87
-
88
- if (mappingPaths.length === 0) {
89
- const filterMsg = entityFilter
90
- ? ` matching entities: ${entityFilter.join(", ")}`
91
- : "";
92
- console.warn(
93
- `No mapping files found in ${options.config}/mappings${filterMsg}`
94
- );
95
- return;
96
- }
97
-
98
- // Extract entity names from mapping paths
99
- const entityNames = mappingPaths.map((path) => basename(path, ".json"));
100
-
101
- // Filter dependencies to only include those relevant to selected entities
102
- const relevantDependencies: Record<string, string[]> = {};
103
- if (config.entityDependencies) {
104
- for (const entity of entityNames) {
105
- if (config.entityDependencies[entity]) {
106
- relevantDependencies[entity] = config.entityDependencies[entity];
107
- }
108
- }
109
- }
110
-
111
- // Setup dependency resolver with filtered dependencies
112
- const resolver = new DependencyResolver(
113
- entityNames,
114
- relevantDependencies,
115
- !!entityFilter // Allow partial resolution when using --entities
116
- );
117
-
118
- // Validate dependencies
119
- const validationErrors = resolver.validateDependencies();
120
- if (validationErrors.length > 0) {
121
- if (entityFilter) {
122
- // When using --entities flag, show warnings instead of errors
123
- console.warn("\n⚠️ Warning: Dependency validation issues:");
124
- validationErrors.forEach((error) => console.warn(` - ${error}`));
125
- console.warn(
126
- "This may cause errors if the dependent data doesn't already exist.\n"
127
- );
128
- } else {
129
- // Strict validation when processing all entities
130
- console.error("Dependency validation errors:");
131
- validationErrors.forEach((error) => console.error(` - ${error}`));
132
- process.exit(1);
133
- }
134
- }
135
-
136
- await processEntitiesInWaves(mappingPaths, resolver, mapper, config);
137
-
138
- metrics.finishProcessing();
139
- console.log(metrics.generateSummary());
140
- } catch (error) {
141
- console.error("Error:", error);
142
- process.exit(1);
143
- }
144
- });
145
-
146
- async function processEntitiesInWaves(
147
- mappingPaths: string[],
148
- resolver: DependencyResolver,
149
- mapper: DataMapper,
150
- config: ReturnType<typeof loadConfig>
151
- ): Promise<void> {
152
- const waves = resolver.resolveExecutionOrder();
153
- const pathMap = new Map(
154
- mappingPaths.map((path) => [basename(path, ".json"), path])
155
- );
156
-
157
- console.log(`Processing ${waves.length} dependency waves...`);
158
-
159
- for (const wave of waves) {
160
- console.log(
161
- `Wave ${wave.wave + 1}: Processing entities [${wave.entities.join(", ")}]`
162
- );
163
-
164
- // Process entities in controlled batches based on entityConcurrency
165
- const entityConcurrency = config.parallelProcessing.entityConcurrency;
166
- const chunks = chunkArray(wave.entities, entityConcurrency);
167
-
168
- for (const chunk of chunks) {
169
- const entityPromises = chunk.map(async (entityName) => {
170
- const configPath = pathMap.get(entityName);
171
- if (configPath) {
172
- try {
173
- const entityConfig = getEntityConfig(entityName, config);
174
- const retryConfig = getRetryConfig(entityName, config);
175
- await mapper.processEntity(configPath, entityConfig, retryConfig);
176
- } catch (error) {
177
- console.warn(`Warning: Could not process ${configPath}:`, error);
178
- }
179
- }
180
- });
181
-
182
- await Promise.allSettled(entityPromises);
183
- }
184
- }
185
- }
186
-
187
- program.parse();
@@ -1,272 +0,0 @@
1
- import fs from "fs";
2
- import path from "path";
3
- import { loadConfig, getEntityConfig, getRetryConfig, DEFAULT_CONFIG } from "./config";
4
-
5
- jest.mock("fs");
6
- const mockFs = fs as jest.Mocked<typeof fs>;
7
-
8
- describe("Configuration", () => {
9
- const testConfigDir = "/test/config";
10
- const configPath = path.join(testConfigDir, "config.yaml");
11
-
12
- afterEach(() => {
13
- jest.clearAllMocks();
14
- });
15
-
16
- describe("loadConfig", () => {
17
- it("should return default config when no config.yaml exists", () => {
18
- mockFs.existsSync.mockReturnValue(false);
19
- const consoleSpy = jest.spyOn(console, "log").mockImplementation();
20
-
21
- const config = loadConfig(testConfigDir);
22
-
23
- expect(config).toEqual(DEFAULT_CONFIG);
24
- expect(consoleSpy).toHaveBeenCalledWith(
25
- "No config.yaml found, using default sequential processing"
26
- );
27
-
28
- consoleSpy.mockRestore();
29
- });
30
-
31
- it("should load and merge YAML configuration", () => {
32
- const yamlContent = `
33
- parallelProcessing:
34
- concurrency: 5
35
- entityConcurrency: 3
36
-
37
- entityConfig:
38
- users:
39
- concurrency: 2
40
- preserveRowOrder: true
41
-
42
- entityDependencies:
43
- products: ["users"]
44
- `;
45
-
46
- mockFs.existsSync.mockReturnValue(true);
47
- mockFs.readFileSync.mockReturnValue(yamlContent);
48
-
49
- const config = loadConfig(testConfigDir);
50
-
51
- expect(config.parallelProcessing.concurrency).toBe(5);
52
- expect(config.parallelProcessing.entityConcurrency).toBe(3);
53
- expect(config.entityConfig.users.concurrency).toBe(2);
54
- expect(config.entityConfig.users.preserveRowOrder).toBe(true);
55
- expect(config.entityDependencies.products).toEqual(["users"]);
56
- });
57
-
58
- it("should merge partial configuration with defaults", () => {
59
- const yamlContent = `
60
- parallelProcessing:
61
- concurrency: 10
62
- entityConfig:
63
- products:
64
- concurrency: 20
65
- `;
66
-
67
- mockFs.existsSync.mockReturnValue(true);
68
- mockFs.readFileSync.mockReturnValue(yamlContent);
69
-
70
- const config = loadConfig(testConfigDir);
71
-
72
- // Should merge with defaults
73
- expect(config.parallelProcessing.concurrency).toBe(10);
74
- expect(config.parallelProcessing.entityConcurrency).toBe(1); // default
75
- expect(config.parallelProcessing.preserveRowOrder).toBe(true); // default
76
- });
77
-
78
- it("should handle invalid YAML gracefully", () => {
79
- mockFs.existsSync.mockReturnValue(true);
80
- mockFs.readFileSync.mockReturnValue("invalid: yaml: content: [");
81
-
82
- const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
83
-
84
- const config = loadConfig(testConfigDir);
85
-
86
- expect(config).toEqual(DEFAULT_CONFIG);
87
- expect(consoleSpy).toHaveBeenCalledWith(
88
- expect.stringContaining("Warning: Failed to parse config.yaml")
89
- );
90
-
91
- consoleSpy.mockRestore();
92
- });
93
-
94
- it("should handle file read errors gracefully", () => {
95
- mockFs.existsSync.mockReturnValue(true);
96
- mockFs.readFileSync.mockImplementation(() => {
97
- throw new Error("File read error");
98
- });
99
-
100
- const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
101
-
102
- const config = loadConfig(testConfigDir);
103
-
104
- expect(config).toEqual(DEFAULT_CONFIG);
105
- expect(consoleSpy).toHaveBeenCalledWith(
106
- expect.stringContaining("Warning: Failed to parse config.yaml")
107
- );
108
-
109
- consoleSpy.mockRestore();
110
- });
111
- });
112
-
113
- describe("getEntityConfig", () => {
114
- const globalConfig = {
115
- retry: {
116
- maxAttempts: 3,
117
- baseDelay: 1000,
118
- maxDelay: 30000,
119
- exponentialBackoff: true,
120
- retryableStatusCodes: [408, 429, 500, 502, 503, 504],
121
- },
122
- parallelProcessing: {
123
- concurrency: 10,
124
- entityConcurrency: 3,
125
- preserveRowOrder: false,
126
- },
127
- entityConfig: {
128
- users: {
129
- concurrency: 2,
130
- preserveRowOrder: true,
131
- },
132
- products: {
133
- concurrency: 20,
134
- },
135
- },
136
- entityDependencies: {},
137
- };
138
-
139
- it("should return global config for entity without overrides", () => {
140
- const entityConfig = getEntityConfig("orders", globalConfig);
141
-
142
- expect(entityConfig).toEqual(globalConfig.parallelProcessing);
143
- });
144
-
145
- it("should merge entity overrides with global config", () => {
146
- const entityConfig = getEntityConfig("products", globalConfig);
147
-
148
- expect(entityConfig.concurrency).toBe(20); // overridden
149
- expect(entityConfig.entityConcurrency).toBe(3); // from global
150
- expect(entityConfig.preserveRowOrder).toBe(false); // from global
151
- });
152
-
153
- it("should apply preserveRowOrder constraint", () => {
154
- const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
155
-
156
- const entityConfig = getEntityConfig("users", globalConfig);
157
-
158
- expect(entityConfig.concurrency).toBe(1); // forced to 1
159
- expect(entityConfig.preserveRowOrder).toBe(true);
160
- expect(consoleSpy).toHaveBeenCalledWith(
161
- "Entity 'users': preserveRowOrder=true forces concurrency=1 (was 2)"
162
- );
163
-
164
- consoleSpy.mockRestore();
165
- });
166
-
167
- it("should not apply constraint when concurrency is already 1", () => {
168
- const config = {
169
- ...globalConfig,
170
- entityConfig: {
171
- ...globalConfig.entityConfig,
172
- sequential: {
173
- concurrency: 1,
174
- preserveRowOrder: true,
175
- },
176
- },
177
- };
178
-
179
- const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
180
-
181
- const entityConfig = getEntityConfig("sequential", config);
182
-
183
- expect(entityConfig.concurrency).toBe(1);
184
- expect(consoleSpy).not.toHaveBeenCalled();
185
-
186
- consoleSpy.mockRestore();
187
- });
188
-
189
- it("should not apply constraint when preserveRowOrder is false", () => {
190
- const config = {
191
- ...globalConfig,
192
- entityConfig: {
193
- ...globalConfig.entityConfig,
194
- bulk: {
195
- concurrency: 50,
196
- preserveRowOrder: false,
197
- },
198
- },
199
- };
200
-
201
- const consoleSpy = jest.spyOn(console, "warn").mockImplementation();
202
-
203
- const entityConfig = getEntityConfig("bulk", config);
204
-
205
- expect(entityConfig.concurrency).toBe(50);
206
- expect(consoleSpy).not.toHaveBeenCalled();
207
-
208
- consoleSpy.mockRestore();
209
- });
210
- });
211
-
212
- describe("getRetryConfig", () => {
213
- const globalConfig = {
214
- retry: {
215
- maxAttempts: 3,
216
- baseDelay: 1000,
217
- maxDelay: 30000,
218
- exponentialBackoff: true,
219
- retryableStatusCodes: [408, 429, 500, 502, 503, 504],
220
- },
221
- parallelProcessing: {
222
- concurrency: 10,
223
- entityConcurrency: 3,
224
- preserveRowOrder: false,
225
- },
226
- entityConfig: {
227
- important: {
228
- retry: {
229
- maxAttempts: 5,
230
- baseDelay: 500,
231
- },
232
- },
233
- fast: {
234
- retry: {
235
- maxAttempts: 1,
236
- },
237
- },
238
- },
239
- entityDependencies: {},
240
- };
241
-
242
- it("should return global retry config for entity without overrides", () => {
243
- const retryConfig = getRetryConfig("regular", globalConfig);
244
-
245
- expect(retryConfig).toEqual(globalConfig.retry);
246
- });
247
-
248
- it("should merge entity retry overrides with global config", () => {
249
- const retryConfig = getRetryConfig("important", globalConfig);
250
-
251
- expect(retryConfig.maxAttempts).toBe(5); // overridden
252
- expect(retryConfig.baseDelay).toBe(500); // overridden
253
- expect(retryConfig.maxDelay).toBe(30000); // from global
254
- expect(retryConfig.exponentialBackoff).toBe(true); // from global
255
- expect(retryConfig.retryableStatusCodes).toEqual([408, 429, 500, 502, 503, 504]); // from global
256
- });
257
-
258
- it("should handle partial retry overrides", () => {
259
- const retryConfig = getRetryConfig("fast", globalConfig);
260
-
261
- expect(retryConfig.maxAttempts).toBe(1); // overridden
262
- expect(retryConfig.baseDelay).toBe(1000); // from global
263
- expect(retryConfig.maxDelay).toBe(30000); // from global
264
- });
265
-
266
- it("should handle entity with no retry config", () => {
267
- const retryConfig = getRetryConfig("undefined-entity", globalConfig);
268
-
269
- expect(retryConfig).toEqual(globalConfig.retry);
270
- });
271
- });
272
- });