@hazeljs/data 0.2.4 → 0.3.1

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 (33) hide show
  1. package/dist/connectors/__tests__/jsonl.connector.test.d.ts +2 -0
  2. package/dist/connectors/__tests__/jsonl.connector.test.d.ts.map +1 -0
  3. package/dist/connectors/__tests__/jsonl.connector.test.js +261 -0
  4. package/dist/connectors/jsonl.connector.d.ts +51 -0
  5. package/dist/connectors/jsonl.connector.d.ts.map +1 -0
  6. package/dist/connectors/jsonl.connector.js +100 -0
  7. package/dist/connectors/postgres.connector.d.ts +78 -0
  8. package/dist/connectors/postgres.connector.d.ts.map +1 -0
  9. package/dist/connectors/postgres.connector.js +224 -0
  10. package/dist/contracts/__tests__/contract-registry.test.d.ts +2 -0
  11. package/dist/contracts/__tests__/contract-registry.test.d.ts.map +1 -0
  12. package/dist/contracts/__tests__/contract-registry.test.js +770 -0
  13. package/dist/contracts/__tests__/contract.decorator.test.d.ts +2 -0
  14. package/dist/contracts/__tests__/contract.decorator.test.d.ts.map +1 -0
  15. package/dist/contracts/__tests__/contract.decorator.test.js +177 -0
  16. package/dist/contracts/contract-registry.d.ts +57 -0
  17. package/dist/contracts/contract-registry.d.ts.map +1 -0
  18. package/dist/contracts/contract-registry.js +285 -0
  19. package/dist/contracts/contract.decorator.d.ts +70 -0
  20. package/dist/contracts/contract.decorator.d.ts.map +1 -0
  21. package/dist/contracts/contract.decorator.js +55 -0
  22. package/dist/contracts/contract.types.d.ts +65 -0
  23. package/dist/contracts/contract.types.d.ts.map +1 -0
  24. package/dist/contracts/contract.types.js +5 -0
  25. package/dist/contracts/index.d.ts +9 -0
  26. package/dist/contracts/index.d.ts.map +1 -0
  27. package/dist/contracts/index.js +16 -0
  28. package/dist/index.d.ts +3 -0
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +14 -2
  31. package/dist/testing/schema-faker.test.js +33 -0
  32. package/dist/transformers/transformer.service.test.js +40 -0
  33. package/package.json +2 -2
@@ -0,0 +1,65 @@
1
+ /**
2
+ * @hazeljs/data - Data Contract Types
3
+ */
4
+ export type ContractStatus = 'active' | 'deprecated' | 'breaking';
5
+ export interface DataContract {
6
+ name: string;
7
+ version: string;
8
+ description?: string;
9
+ owner: string;
10
+ schema: Record<string, unknown>;
11
+ sla?: DataContractSLA;
12
+ consumers?: string[];
13
+ producers?: string[];
14
+ status: ContractStatus;
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ tags?: string[];
18
+ }
19
+ export interface DataContractSLA {
20
+ freshness?: {
21
+ maxDelayMinutes: number;
22
+ checkIntervalMinutes?: number;
23
+ };
24
+ completeness?: {
25
+ minCompleteness: number;
26
+ requiredFields: string[];
27
+ };
28
+ quality?: {
29
+ minQualityScore: number;
30
+ checks: string[];
31
+ };
32
+ availability?: {
33
+ minUptime: number;
34
+ };
35
+ }
36
+ export interface ContractViolation {
37
+ contractName: string;
38
+ contractVersion: string;
39
+ violationType: 'schema' | 'sla' | 'breaking_change';
40
+ severity: 'warning' | 'error' | 'critical';
41
+ message: string;
42
+ details: Record<string, unknown>;
43
+ timestamp: Date;
44
+ }
45
+ export interface SchemaChange {
46
+ field: string;
47
+ changeType: 'added' | 'removed' | 'modified' | 'type_changed';
48
+ oldValue?: unknown;
49
+ newValue?: unknown;
50
+ breaking: boolean;
51
+ }
52
+ export interface ContractDiff {
53
+ contractName: string;
54
+ oldVersion: string;
55
+ newVersion: string;
56
+ changes: SchemaChange[];
57
+ breakingChanges: SchemaChange[];
58
+ isBreaking: boolean;
59
+ }
60
+ export interface ContractValidationResult {
61
+ valid: boolean;
62
+ violations: ContractViolation[];
63
+ warnings: string[];
64
+ }
65
+ //# sourceMappingURL=contract.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract.types.d.ts","sourceRoot":"","sources":["../../src/contracts/contract.types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAElE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,GAAG,CAAC,EAAE,eAAe,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE;QACV,eAAe,EAAE,MAAM,CAAC;QACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;KAC/B,CAAC;IACF,YAAY,CAAC,EAAE;QACb,eAAe,EAAE,MAAM,CAAC;QACxB,cAAc,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,OAAO,CAAC,EAAE;QACR,eAAe,EAAE,MAAM,CAAC;QACxB,MAAM,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC;IACF,YAAY,CAAC,EAAE;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,QAAQ,GAAG,KAAK,GAAG,iBAAiB,CAAC;IACpD,QAAQ,EAAE,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,cAAc,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,eAAe,EAAE,YAAY,EAAE,CAAC;IAChC,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,wBAAwB;IACvC,KAAK,EAAE,OAAO,CAAC;IACf,UAAU,EAAE,iBAAiB,EAAE,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ /**
3
+ * @hazeljs/data - Data Contract Types
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @hazeljs/data - Data Contracts
3
+ *
4
+ * Export all data contract components
5
+ */
6
+ export type { ContractStatus, DataContract as DataContractType, DataContractSLA, ContractViolation, SchemaChange, ContractDiff, ContractValidationResult, } from './contract.types';
7
+ export { ContractRegistry } from './contract-registry';
8
+ export { DataContract, getDataContractMetadata, hasDataContractMetadata, type DataContractOptions, type DataContractMetadata, } from './contract.decorator';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/contracts/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,cAAc,EACd,YAAY,IAAI,gBAAgB,EAChC,eAAe,EACf,iBAAiB,EACjB,YAAY,EACZ,YAAY,EACZ,wBAAwB,GACzB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,uBAAuB,EACvB,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ /**
3
+ * @hazeljs/data - Data Contracts
4
+ *
5
+ * Export all data contract components
6
+ */
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.hasDataContractMetadata = exports.getDataContractMetadata = exports.DataContract = exports.ContractRegistry = void 0;
9
+ // Services
10
+ var contract_registry_1 = require("./contract-registry");
11
+ Object.defineProperty(exports, "ContractRegistry", { enumerable: true, get: function () { return contract_registry_1.ContractRegistry; } });
12
+ // Decorators
13
+ var contract_decorator_1 = require("./contract.decorator");
14
+ Object.defineProperty(exports, "DataContract", { enumerable: true, get: function () { return contract_decorator_1.DataContract; } });
15
+ Object.defineProperty(exports, "getDataContractMetadata", { enumerable: true, get: function () { return contract_decorator_1.getDataContractMetadata; } });
16
+ Object.defineProperty(exports, "hasDataContractMetadata", { enumerable: true, get: function () { return contract_decorator_1.hasDataContractMetadata; } });
package/dist/index.d.ts CHANGED
@@ -24,6 +24,9 @@ export type { DataSource, DataSink, ConnectorOptions } from './connectors/connec
24
24
  export { CsvSource, CsvSink, type CsvSourceOptions, type CsvSinkOptions, } from './connectors/csv.connector';
25
25
  export { HttpSource, HttpSink, type HttpSourceOptions, type HttpSinkOptions, } from './connectors/http.connector';
26
26
  export { MemorySource, MemorySink } from './connectors/memory.connector';
27
+ export { JsonlSource, JsonlSink, type JsonlSourceOptions, type JsonlSinkOptions, } from './connectors/jsonl.connector';
28
+ export { PostgresSource, PostgresSink, type PostgresSourceOptions, type PostgresSinkOptions, } from './connectors/postgres.connector';
29
+ export { ContractRegistry, DataContract, getDataContractMetadata, hasDataContractMetadata, type ContractStatus, type DataContractType, type DataContractSLA, type ContractViolation, type SchemaChange, type ContractDiff, type ContractValidationResult, type DataContractOptions, type DataContractMetadata, } from './contracts';
27
30
  export { TelemetryService, createPrometheusExporter, type PipelineSpan, type MetricPoint, type LineageEntry, type SpanExporter, type MetricExporter, } from './telemetry/telemetry';
28
31
  export { SchemaFaker, PipelineTestHarness, MockSource, MockSink, type StepSnapshot, type PipelineRunResult, } from './testing';
29
32
  export { Injectable } from '@hazeljs/core';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3,8 +3,8 @@
3
3
  * @hazeljs/data - Data Processing & ETL for HazelJS
4
4
  */
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.SchemaFaker = exports.createPrometheusExporter = exports.TelemetryService = exports.MemorySink = exports.MemorySource = exports.HttpSink = exports.HttpSource = exports.CsvSink = exports.CsvSource = exports.QualityService = exports.renameKeys = exports.omit = exports.pick = exports.stringifyJson = exports.parseJson = exports.toUpperCase = exports.toLowerCase = exports.trimString = exports.TransformerService = exports.SchemaValidationException = exports.SchemaValidator = exports.FlinkService = exports.StreamProcessor = exports.StreamBuilder = exports.createFlinkJobGraph = exports.mapToFlinkOperator = exports.FlinkJob = exports.FlinkClient = exports.StreamService = exports.PipelineBuilder = exports.PipelineBase = exports.ETLService = exports.getRedactMetadata = exports.getMaskMetadata = exports.hasStreamMetadata = exports.getStreamMetadata = exports.getValidateMetadata = exports.getTransformMetadata = exports.hasPipelineMetadata = exports.getPipelineMetadata = exports.Decrypt = exports.Encrypt = exports.Redact = exports.Mask = exports.Stream = exports.Validate = exports.Transform = exports.Pipeline = exports.Schema = exports.DataModule = void 0;
7
- exports.Injectable = exports.MockSink = exports.MockSource = exports.PipelineTestHarness = void 0;
6
+ exports.PostgresSource = exports.JsonlSink = exports.JsonlSource = exports.MemorySink = exports.MemorySource = exports.HttpSink = exports.HttpSource = exports.CsvSink = exports.CsvSource = exports.QualityService = exports.renameKeys = exports.omit = exports.pick = exports.stringifyJson = exports.parseJson = exports.toUpperCase = exports.toLowerCase = exports.trimString = exports.TransformerService = exports.SchemaValidationException = exports.SchemaValidator = exports.FlinkService = exports.StreamProcessor = exports.StreamBuilder = exports.createFlinkJobGraph = exports.mapToFlinkOperator = exports.FlinkJob = exports.FlinkClient = exports.StreamService = exports.PipelineBuilder = exports.PipelineBase = exports.ETLService = exports.getRedactMetadata = exports.getMaskMetadata = exports.hasStreamMetadata = exports.getStreamMetadata = exports.getValidateMetadata = exports.getTransformMetadata = exports.hasPipelineMetadata = exports.getPipelineMetadata = exports.Decrypt = exports.Encrypt = exports.Redact = exports.Mask = exports.Stream = exports.Validate = exports.Transform = exports.Pipeline = exports.Schema = exports.DataModule = void 0;
7
+ exports.Injectable = exports.MockSink = exports.MockSource = exports.PipelineTestHarness = exports.SchemaFaker = exports.createPrometheusExporter = exports.TelemetryService = exports.hasDataContractMetadata = exports.getDataContractMetadata = exports.DataContract = exports.ContractRegistry = exports.PostgresSink = void 0;
8
8
  require("reflect-metadata");
9
9
  // ─── Module ──────────────────────────────────────────────────────────────────
10
10
  var data_module_1 = require("./data.module");
@@ -81,6 +81,18 @@ Object.defineProperty(exports, "HttpSink", { enumerable: true, get: function ()
81
81
  var memory_connector_1 = require("./connectors/memory.connector");
82
82
  Object.defineProperty(exports, "MemorySource", { enumerable: true, get: function () { return memory_connector_1.MemorySource; } });
83
83
  Object.defineProperty(exports, "MemorySink", { enumerable: true, get: function () { return memory_connector_1.MemorySink; } });
84
+ var jsonl_connector_1 = require("./connectors/jsonl.connector");
85
+ Object.defineProperty(exports, "JsonlSource", { enumerable: true, get: function () { return jsonl_connector_1.JsonlSource; } });
86
+ Object.defineProperty(exports, "JsonlSink", { enumerable: true, get: function () { return jsonl_connector_1.JsonlSink; } });
87
+ var postgres_connector_1 = require("./connectors/postgres.connector");
88
+ Object.defineProperty(exports, "PostgresSource", { enumerable: true, get: function () { return postgres_connector_1.PostgresSource; } });
89
+ Object.defineProperty(exports, "PostgresSink", { enumerable: true, get: function () { return postgres_connector_1.PostgresSink; } });
90
+ // ─── Data Contracts ───────────────────────────────────────────────────────────
91
+ var contracts_1 = require("./contracts");
92
+ Object.defineProperty(exports, "ContractRegistry", { enumerable: true, get: function () { return contracts_1.ContractRegistry; } });
93
+ Object.defineProperty(exports, "DataContract", { enumerable: true, get: function () { return contracts_1.DataContract; } });
94
+ Object.defineProperty(exports, "getDataContractMetadata", { enumerable: true, get: function () { return contracts_1.getDataContractMetadata; } });
95
+ Object.defineProperty(exports, "hasDataContractMetadata", { enumerable: true, get: function () { return contracts_1.hasDataContractMetadata; } });
84
96
  // ─── Telemetry ────────────────────────────────────────────────────────────────
85
97
  var telemetry_1 = require("./telemetry/telemetry");
86
98
  Object.defineProperty(exports, "TelemetryService", { enumerable: true, get: function () { return telemetry_1.TelemetryService; } });
@@ -63,4 +63,37 @@ describe('SchemaFaker', () => {
63
63
  const value = schema_faker_1.SchemaFaker.generate(schema);
64
64
  expect(value === null || typeof value === 'string').toBe(true);
65
65
  });
66
+ it('generates integer type', () => {
67
+ const faker = new schema_faker_1.SchemaFaker();
68
+ const schema = schema_1.Schema.number();
69
+ const value = faker.generate(schema);
70
+ expect(typeof value).toBe('number');
71
+ });
72
+ it('generates nested objects', () => {
73
+ const schema = schema_1.Schema.object({
74
+ user: schema_1.Schema.object({
75
+ name: schema_1.Schema.string(),
76
+ age: schema_1.Schema.number(),
77
+ }),
78
+ });
79
+ const value = schema_faker_1.SchemaFaker.generate(schema);
80
+ expect(value).toHaveProperty('user');
81
+ expect(value.user).toHaveProperty('name');
82
+ expect(value.user).toHaveProperty('age');
83
+ });
84
+ it('generates array with custom length', () => {
85
+ const faker = new schema_faker_1.SchemaFaker({ arrayMinLength: 5, arrayMaxLength: 5 });
86
+ const schema = schema_1.Schema.array(schema_1.Schema.string());
87
+ const value = faker.generate(schema);
88
+ expect(Array.isArray(value)).toBe(true);
89
+ expect(value.length).toBe(5);
90
+ });
91
+ it('generates optional fields', () => {
92
+ const schema = schema_1.Schema.object({
93
+ required: schema_1.Schema.string(),
94
+ optional: schema_1.Schema.string().optional(),
95
+ });
96
+ const value = schema_faker_1.SchemaFaker.generate(schema);
97
+ expect(value).toHaveProperty('required');
98
+ });
66
99
  });
@@ -39,4 +39,44 @@ describe('TransformerService', () => {
39
39
  const result = await filter([1, 2, 3]);
40
40
  expect(result).toEqual([2, 3]);
41
41
  });
42
+ it('apply handles async transform', async () => {
43
+ service.register('asyncDouble', async (x) => x * 2);
44
+ const result = await service.apply('asyncDouble', 5);
45
+ expect(result).toBe(10);
46
+ });
47
+ it('pipe handles async functions', async () => {
48
+ const fn = service.pipe(async (x) => x + 1, async (x) => x * 2);
49
+ const result = await fn(5);
50
+ expect(result).toBe(12);
51
+ });
52
+ it('pipe handles mix of sync and async functions', async () => {
53
+ const fn = service.pipe((x) => x + 1, async (x) => x * 2, (x) => x - 1);
54
+ const result = await fn(5);
55
+ expect(result).toBe(11);
56
+ });
57
+ it('map handles async mapper', async () => {
58
+ const mapper = service.map(async (x) => x * 2);
59
+ const result = await mapper([1, 2, 3]);
60
+ expect(result).toEqual([2, 4, 6]);
61
+ });
62
+ it('filter returns empty array when no items match', async () => {
63
+ const filter = service.filter((x) => x > 10);
64
+ const result = await filter([1, 2, 3]);
65
+ expect(result).toEqual([]);
66
+ });
67
+ it('filter handles empty array', async () => {
68
+ const filter = service.filter((x) => x > 1);
69
+ const result = await filter([]);
70
+ expect(result).toEqual([]);
71
+ });
72
+ it('map handles empty array', async () => {
73
+ const mapper = service.map((x) => x * 2);
74
+ const result = await mapper([]);
75
+ expect(result).toEqual([]);
76
+ });
77
+ it('pipe handles empty pipeline', async () => {
78
+ const fn = service.pipe();
79
+ const result = await fn(5);
80
+ expect(result).toBe(5);
81
+ });
42
82
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hazeljs/data",
3
- "version": "0.2.4",
3
+ "version": "0.3.1",
4
4
  "description": "Data Processing & ETL for HazelJS framework",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -49,5 +49,5 @@
49
49
  "url": "https://github.com/hazeljs/hazel-js/issues"
50
50
  },
51
51
  "homepage": "https://hazeljs.ai",
52
- "gitHead": "e0c2d21ace726f2a0bf20c5baefad02e1e681ba9"
52
+ "gitHead": "db6df492988e5d7b03253a98977c71c7a4540e1c"
53
53
  }