@mkven/samples-generation 0.1.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +484 -0
  3. package/dist/generator/base-generator.d.ts +39 -0
  4. package/dist/generator/base-generator.d.ts.map +1 -0
  5. package/dist/generator/base-generator.js +72 -0
  6. package/dist/generator/base-generator.js.map +1 -0
  7. package/dist/generator/clickhouse-generator.d.ts +44 -0
  8. package/dist/generator/clickhouse-generator.d.ts.map +1 -0
  9. package/dist/generator/clickhouse-generator.js +452 -0
  10. package/dist/generator/clickhouse-generator.js.map +1 -0
  11. package/dist/generator/escape.d.ts +18 -0
  12. package/dist/generator/escape.d.ts.map +1 -0
  13. package/dist/generator/escape.js +25 -0
  14. package/dist/generator/escape.js.map +1 -0
  15. package/dist/generator/index.d.ts +9 -0
  16. package/dist/generator/index.d.ts.map +1 -0
  17. package/dist/generator/index.js +8 -0
  18. package/dist/generator/index.js.map +1 -0
  19. package/dist/generator/postgres-generator.d.ts +33 -0
  20. package/dist/generator/postgres-generator.d.ts.map +1 -0
  21. package/dist/generator/postgres-generator.js +317 -0
  22. package/dist/generator/postgres-generator.js.map +1 -0
  23. package/dist/generator/sqlite-generator.d.ts +30 -0
  24. package/dist/generator/sqlite-generator.d.ts.map +1 -0
  25. package/dist/generator/sqlite-generator.js +334 -0
  26. package/dist/generator/sqlite-generator.js.map +1 -0
  27. package/dist/generator/trino-generator.d.ts +38 -0
  28. package/dist/generator/trino-generator.d.ts.map +1 -0
  29. package/dist/generator/trino-generator.js +408 -0
  30. package/dist/generator/trino-generator.js.map +1 -0
  31. package/dist/generator/types.d.ts +230 -0
  32. package/dist/generator/types.d.ts.map +1 -0
  33. package/dist/generator/types.js +2 -0
  34. package/dist/generator/types.js.map +1 -0
  35. package/dist/generator/utils.d.ts +14 -0
  36. package/dist/generator/utils.d.ts.map +1 -0
  37. package/dist/generator/utils.js +48 -0
  38. package/dist/generator/utils.js.map +1 -0
  39. package/dist/index.d.ts +2 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/index.js +2 -0
  42. package/dist/index.js.map +1 -0
  43. package/package.json +75 -0
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/generator/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Format bytes to human-readable string with appropriate unit
3
+ */
4
+ export declare function formatBytes(bytes: number): string;
5
+ /**
6
+ * Format duration in milliseconds to human-readable string
7
+ */
8
+ export declare function formatDuration(ms: number): string;
9
+ /**
10
+ * Generate a deterministic lookup table name from values array.
11
+ * Uses a simple hash to create a stable name.
12
+ */
13
+ export declare function getLookupTableName(values: string[]): string;
14
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/generator/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMjD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAYjD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAY3D"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Format bytes to human-readable string with appropriate unit
3
+ */
4
+ export function formatBytes(bytes) {
5
+ if (bytes < 1024)
6
+ return `${String(bytes)} B`;
7
+ if (bytes < 1024 * 1024)
8
+ return `${(bytes / 1024).toFixed(2)} KB`;
9
+ if (bytes < 1024 * 1024 * 1024)
10
+ return `${(bytes / (1024 * 1024)).toFixed(2)} MB`;
11
+ return `${(bytes / (1024 * 1024 * 1024)).toFixed(2)} GB`;
12
+ }
13
+ /**
14
+ * Format duration in milliseconds to human-readable string
15
+ */
16
+ export function formatDuration(ms) {
17
+ if (ms < 1000)
18
+ return `${String(ms)}ms`;
19
+ if (ms < 60_000)
20
+ return `${(ms / 1000).toFixed(2)}s`;
21
+ if (ms < 3600_000) {
22
+ const minutes = Math.floor(ms / 60_000);
23
+ const seconds = Math.floor((ms % 60_000) / 1000);
24
+ return `${String(minutes)}m ${String(seconds)}s`;
25
+ }
26
+ const hours = Math.floor(ms / 3600_000);
27
+ const minutes = Math.floor((ms % 3600_000) / 60_000);
28
+ const seconds = Math.floor((ms % 60_000) / 1000);
29
+ return `${String(hours)}h ${String(minutes)}m ${String(seconds)}s`;
30
+ }
31
+ /**
32
+ * Generate a deterministic lookup table name from values array.
33
+ * Uses a simple hash to create a stable name.
34
+ */
35
+ export function getLookupTableName(values) {
36
+ // Simple hash: join values and compute a numeric hash
37
+ const str = values.join("\0");
38
+ let hash = 0;
39
+ for (let i = 0; i < str.length; i++) {
40
+ const char = str.charCodeAt(i);
41
+ hash = (hash << 5) - hash + char;
42
+ hash = hash & hash; // Convert to 32bit integer
43
+ }
44
+ // Convert to hex and take absolute value
45
+ const hexHash = Math.abs(hash).toString(16).padStart(8, "0");
46
+ return `_lookup_${hexHash}`;
47
+ }
48
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/generator/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;IAC9C,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAC5B,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC;IACxC,IAAI,EAAE,GAAG,MAAM;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACrD,IAAI,EAAE,GAAG,QAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;QACjD,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;IACnD,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,GAAG,MAAM,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACjD,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;AACrE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAgB;IACjD,sDAAsD;IACtD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;QACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;IACjD,CAAC;IACD,yCAAyC;IACzC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC7D,OAAO,WAAW,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./generator/index.js";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from "./generator/index.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,75 @@
1
+ {
2
+ "name": "@mkven/samples-generation",
3
+ "version": "0.1.0",
4
+ "description": "Generate sample data for PostgreSQL, ClickHouse, SQLite, and Trino with a unified interface",
5
+ "author": "Damir Manapov",
6
+ "license": "MIT",
7
+ "type": "module",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "exports": {
11
+ ".": {
12
+ "types": "./dist/index.d.ts",
13
+ "import": "./dist/index.js"
14
+ }
15
+ },
16
+ "files": [
17
+ "dist"
18
+ ],
19
+ "keywords": [
20
+ "data-generation",
21
+ "sample-data",
22
+ "test-data",
23
+ "postgresql",
24
+ "clickhouse",
25
+ "sqlite",
26
+ "trino",
27
+ "database",
28
+ "faker",
29
+ "mock-data"
30
+ ],
31
+ "repository": {
32
+ "type": "git",
33
+ "url": "https://github.com/damir-manapov/samples-generation"
34
+ },
35
+ "publishConfig": {
36
+ "access": "public"
37
+ },
38
+ "dependencies": {
39
+ "@clickhouse/client": "^1.15.0",
40
+ "@mkven/name-dictionaries": "github:mkven/name-dictionaries",
41
+ "better-sqlite3": "^12.5.0",
42
+ "pg-format": "^1.0.4",
43
+ "postgres": "^3.4.7",
44
+ "trino-client": "^0.2.9"
45
+ },
46
+ "devDependencies": {
47
+ "@eslint/js": "^9.39.2",
48
+ "@types/better-sqlite3": "^7.6.13",
49
+ "@types/node": "^25.0.3",
50
+ "@types/pg-format": "^1.0.5",
51
+ "eslint": "^9.39.2",
52
+ "eslint-config-prettier": "^10.1.8",
53
+ "prettier": "^3.7.4",
54
+ "tsx": "^4.21.0",
55
+ "typescript": "^5.9.3",
56
+ "typescript-eslint": "^8.50.0",
57
+ "vitest": "^4.0.16"
58
+ },
59
+ "scripts": {
60
+ "build": "tsc -p tsconfig.build.json",
61
+ "dev": "tsx src/index.ts",
62
+ "test": "vitest run",
63
+ "test:e2e": "vitest run --config vitest.e2e.config.ts",
64
+ "test:watch": "vitest",
65
+ "lint": "eslint .",
66
+ "lint:fix": "eslint . --fix",
67
+ "format": "prettier --write .",
68
+ "format:check": "prettier --check .",
69
+ "typecheck": "tsc --noEmit",
70
+ "compose:up": "docker compose -f compose/docker-compose.yml --profile single up starter",
71
+ "compose:down": "docker compose -f compose/docker-compose.yml down",
72
+ "compose:restart": "docker compose -f compose/docker-compose.yml restart",
73
+ "compose:reset": "docker compose -f compose/docker-compose.yml down --volumes --remove-orphans"
74
+ }
75
+ }