openlayer 0.24.3 → 0.25.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.25.0 (2026-03-23)
4
+
5
+ Full Changelog: [v0.24.3...v0.25.0](https://github.com/openlayer-ai/openlayer-ts/compare/v0.24.3...v0.25.0)
6
+
7
+ ### Features
8
+
9
+ * **closes OPEN-5988:** openlayer-ts should accept csv datasets ([5399658](https://github.com/openlayer-ai/openlayer-ts/commit/5399658a40a29593943b225030becbbcbe0dde91))
10
+
11
+
12
+ ### Chores
13
+
14
+ * **tests:** bump steady to v0.19.4 ([140fde6](https://github.com/openlayer-ai/openlayer-ts/commit/140fde6da9cc92b76401d261ecc2c63461c23857))
15
+ * **tests:** bump steady to v0.19.5 ([c0b13a9](https://github.com/openlayer-ai/openlayer-ts/commit/c0b13a972442028cc6b73f6c56cee0b97e85df02))
16
+
3
17
  ## 0.24.3 (2026-03-20)
4
18
 
5
19
  Full Changelog: [v0.24.2...v0.24.3](https://github.com/openlayer-ai/openlayer-ts/compare/v0.24.2...v0.24.3)
@@ -14,6 +14,13 @@ export interface Config {
14
14
  costColumnName?: string;
15
15
  numOfTokenColumnName?: string;
16
16
  }
17
+ export type DatasetFormat = 'csv' | 'json';
18
+ export declare function detectDatasetFormat(datasetPath: string): DatasetFormat;
19
+ export declare function parseCsv(content: string): Record<string, string>[];
20
+ export declare function loadDataset(datasetPath: string): {
21
+ data: any[];
22
+ format: DatasetFormat;
23
+ };
17
24
  declare class CLIHandler {
18
25
  private run;
19
26
  constructor(runFunction: (...args: any[]) => Promise<any>);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.mts","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC;CACb;AAYD,MAAM,WAAW,MAAM;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAmC;gBAElC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC;IAIlD,UAAU;IA2EjB,OAAO,CAAC,WAAW;CAcpB;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"cli.d.mts","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC;CACb;AAYD,MAAM,WAAW,MAAM;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAStE;AAkCD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAelE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAevF;AAED,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAmC;gBAElC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC;IAIlD,UAAU;IAwEjB,OAAO,CAAC,WAAW;CAcpB;AAED,eAAe,UAAU,CAAC"}
package/lib/core/cli.d.ts CHANGED
@@ -14,6 +14,13 @@ export interface Config {
14
14
  costColumnName?: string;
15
15
  numOfTokenColumnName?: string;
16
16
  }
17
+ export type DatasetFormat = 'csv' | 'json';
18
+ export declare function detectDatasetFormat(datasetPath: string): DatasetFormat;
19
+ export declare function parseCsv(content: string): Record<string, string>[];
20
+ export declare function loadDataset(datasetPath: string): {
21
+ data: any[];
22
+ format: DatasetFormat;
23
+ };
17
24
  declare class CLIHandler {
18
25
  private run;
19
26
  constructor(runFunction: (...args: any[]) => Promise<any>);
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC;CACb;AAYD,MAAM,WAAW,MAAM;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAmC;gBAElC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC;IAIlD,UAAU;IA2EjB,OAAO,CAAC,WAAW;CAcpB;AAED,eAAe,UAAU,CAAC"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC;CACb;AAYD,MAAM,WAAW,MAAM;IACrB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B,CAAC;IACF,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;AAE3C,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,aAAa,CAStE;AAkCD,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAelE;AAED,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,MAAM,EAAE,aAAa,CAAA;CAAE,CAevF;AAED,cAAM,UAAU;IACd,OAAO,CAAC,GAAG,CAAmC;gBAElC,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,GAAG,CAAC;IAIlD,UAAU;IAwEjB,OAAO,CAAC,WAAW;CAcpB;AAED,eAAe,UAAU,CAAC"}
package/lib/core/cli.js CHANGED
@@ -11,11 +11,86 @@
11
11
  * cliHandler.runFromCLI();
12
12
  */
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
+ exports.detectDatasetFormat = detectDatasetFormat;
15
+ exports.parseCsv = parseCsv;
16
+ exports.loadDataset = loadDataset;
14
17
  const tslib_1 = require("../../internal/tslib.js");
15
18
  const commander_1 = require("commander");
16
19
  const fs = tslib_1.__importStar(require("fs"));
17
20
  const path = tslib_1.__importStar(require("path"));
18
21
  const tracer_1 = require("../tracing/tracer.js");
22
+ function detectDatasetFormat(datasetPath) {
23
+ const ext = path.extname(datasetPath).toLowerCase();
24
+ if (ext === '.csv') {
25
+ return 'csv';
26
+ }
27
+ if (ext === '.json') {
28
+ return 'json';
29
+ }
30
+ throw new Error(`Unsupported dataset format: ${datasetPath}`);
31
+ }
32
+ function parseCsvLine(line) {
33
+ const result = [];
34
+ let current = '';
35
+ let inQuotes = false;
36
+ for (let i = 0; i < line.length; i += 1) {
37
+ const char = line[i];
38
+ const next = line[i + 1];
39
+ if (inQuotes) {
40
+ if (char === '"' && next === '"') {
41
+ current += '"';
42
+ i += 1; // skip escaped quote
43
+ }
44
+ else if (char === '"') {
45
+ inQuotes = false;
46
+ }
47
+ else {
48
+ current += char;
49
+ }
50
+ }
51
+ else if (char === ',') {
52
+ result.push(current);
53
+ current = '';
54
+ }
55
+ else if (char === '"') {
56
+ inQuotes = true;
57
+ }
58
+ else {
59
+ current += char;
60
+ }
61
+ }
62
+ result.push(current);
63
+ return result;
64
+ }
65
+ function parseCsv(content) {
66
+ const lines = content.split(/\r?\n/).filter((line) => line.trim().length > 0);
67
+ if (lines.length === 0) {
68
+ return [];
69
+ }
70
+ const headers = parseCsvLine(lines[0]);
71
+ return lines.slice(1).map((line) => {
72
+ const values = parseCsvLine(line);
73
+ const row = {};
74
+ headers.forEach((header, idx) => {
75
+ row[header] = values[idx] ?? '';
76
+ });
77
+ return row;
78
+ });
79
+ }
80
+ function loadDataset(datasetPath) {
81
+ const datasetFullPath = path.resolve(datasetPath);
82
+ const rawData = fs.readFileSync(datasetFullPath, 'utf8');
83
+ const format = detectDatasetFormat(datasetFullPath);
84
+ if (format === 'json') {
85
+ const parsed = JSON.parse(rawData);
86
+ if (!Array.isArray(parsed)) {
87
+ throw new Error('Dataset JSON must be an array of records');
88
+ }
89
+ return { data: parsed, format };
90
+ }
91
+ const parsed = parseCsv(rawData);
92
+ return { data: parsed, format };
93
+ }
19
94
  class CLIHandler {
20
95
  constructor(runFunction) {
21
96
  this.run = runFunction;
@@ -27,10 +102,7 @@ class CLIHandler {
27
102
  commander_1.program.parse(process.argv);
28
103
  const options = commander_1.program.opts();
29
104
  const { datasetPath, outputDir } = options;
30
- // Load dataset
31
- const datasetFullPath = path.resolve(datasetPath);
32
- const rawData = fs.readFileSync(datasetFullPath, 'utf8');
33
- const dataset = JSON.parse(rawData);
105
+ const { data: dataset } = loadDataset(datasetPath);
34
106
  // Process each item in the dataset dynamically
35
107
  Promise.all(dataset.map(async (item) => {
36
108
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"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"}
package/lib/core/cli.mjs CHANGED
@@ -13,6 +13,78 @@ import { program } from 'commander';
13
13
  import * as fs from 'fs';
14
14
  import * as path from 'path';
15
15
  import { getCurrentTrace, postProcessTrace } from "../tracing/tracer.mjs";
16
+ export function detectDatasetFormat(datasetPath) {
17
+ const ext = path.extname(datasetPath).toLowerCase();
18
+ if (ext === '.csv') {
19
+ return 'csv';
20
+ }
21
+ if (ext === '.json') {
22
+ return 'json';
23
+ }
24
+ throw new Error(`Unsupported dataset format: ${datasetPath}`);
25
+ }
26
+ function parseCsvLine(line) {
27
+ const result = [];
28
+ let current = '';
29
+ let inQuotes = false;
30
+ for (let i = 0; i < line.length; i += 1) {
31
+ const char = line[i];
32
+ const next = line[i + 1];
33
+ if (inQuotes) {
34
+ if (char === '"' && next === '"') {
35
+ current += '"';
36
+ i += 1; // skip escaped quote
37
+ }
38
+ else if (char === '"') {
39
+ inQuotes = false;
40
+ }
41
+ else {
42
+ current += char;
43
+ }
44
+ }
45
+ else if (char === ',') {
46
+ result.push(current);
47
+ current = '';
48
+ }
49
+ else if (char === '"') {
50
+ inQuotes = true;
51
+ }
52
+ else {
53
+ current += char;
54
+ }
55
+ }
56
+ result.push(current);
57
+ return result;
58
+ }
59
+ export function parseCsv(content) {
60
+ const lines = content.split(/\r?\n/).filter((line) => line.trim().length > 0);
61
+ if (lines.length === 0) {
62
+ return [];
63
+ }
64
+ const headers = parseCsvLine(lines[0]);
65
+ return lines.slice(1).map((line) => {
66
+ const values = parseCsvLine(line);
67
+ const row = {};
68
+ headers.forEach((header, idx) => {
69
+ row[header] = values[idx] ?? '';
70
+ });
71
+ return row;
72
+ });
73
+ }
74
+ export function loadDataset(datasetPath) {
75
+ const datasetFullPath = path.resolve(datasetPath);
76
+ const rawData = fs.readFileSync(datasetFullPath, 'utf8');
77
+ const format = detectDatasetFormat(datasetFullPath);
78
+ if (format === 'json') {
79
+ const parsed = JSON.parse(rawData);
80
+ if (!Array.isArray(parsed)) {
81
+ throw new Error('Dataset JSON must be an array of records');
82
+ }
83
+ return { data: parsed, format };
84
+ }
85
+ const parsed = parseCsv(rawData);
86
+ return { data: parsed, format };
87
+ }
16
88
  class CLIHandler {
17
89
  constructor(runFunction) {
18
90
  this.run = runFunction;
@@ -24,10 +96,7 @@ class CLIHandler {
24
96
  program.parse(process.argv);
25
97
  const options = program.opts();
26
98
  const { datasetPath, outputDir } = options;
27
- // Load dataset
28
- const datasetFullPath = path.resolve(datasetPath);
29
- const rawData = fs.readFileSync(datasetFullPath, 'utf8');
30
- const dataset = JSON.parse(rawData);
99
+ const { data: dataset } = loadDataset(datasetPath);
31
100
  // Process each item in the dataset dynamically
32
101
  Promise.all(dataset.map(async (item) => {
33
102
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"cli.mjs","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.mjs","sourceRoot":"","sources":["../../src/lib/core/cli.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openlayer",
3
- "version": "0.24.3",
3
+ "version": "0.25.0",
4
4
  "description": "The official TypeScript library for the Openlayer API",
5
5
  "author": "Openlayer <support@openlayer.com>",
6
6
  "types": "./index.d.ts",
@@ -42,6 +42,85 @@ export interface Config {
42
42
  numOfTokenColumnName?: string;
43
43
  }
44
44
 
45
+ export type DatasetFormat = 'csv' | 'json';
46
+
47
+ export function detectDatasetFormat(datasetPath: string): DatasetFormat {
48
+ const ext = path.extname(datasetPath).toLowerCase();
49
+ if (ext === '.csv') {
50
+ return 'csv';
51
+ }
52
+ if (ext === '.json') {
53
+ return 'json';
54
+ }
55
+ throw new Error(`Unsupported dataset format: ${datasetPath}`);
56
+ }
57
+
58
+ function parseCsvLine(line: string): string[] {
59
+ const result: string[] = [];
60
+ let current = '';
61
+ let inQuotes = false;
62
+
63
+ for (let i = 0; i < line.length; i += 1) {
64
+ const char = line[i];
65
+ const next = line[i + 1];
66
+
67
+ if (inQuotes) {
68
+ if (char === '"' && next === '"') {
69
+ current += '"';
70
+ i += 1; // skip escaped quote
71
+ } else if (char === '"') {
72
+ inQuotes = false;
73
+ } else {
74
+ current += char;
75
+ }
76
+ } else if (char === ',') {
77
+ result.push(current);
78
+ current = '';
79
+ } else if (char === '"') {
80
+ inQuotes = true;
81
+ } else {
82
+ current += char;
83
+ }
84
+ }
85
+
86
+ result.push(current);
87
+ return result;
88
+ }
89
+
90
+ export function parseCsv(content: string): Record<string, string>[] {
91
+ const lines = content.split(/\r?\n/).filter((line) => line.trim().length > 0);
92
+ if (lines.length === 0) {
93
+ return [];
94
+ }
95
+
96
+ const headers = parseCsvLine(lines[0]!);
97
+ return lines.slice(1).map((line) => {
98
+ const values = parseCsvLine(line);
99
+ const row: Record<string, string> = {};
100
+ headers.forEach((header, idx) => {
101
+ row[header] = values[idx] ?? '';
102
+ });
103
+ return row;
104
+ });
105
+ }
106
+
107
+ export function loadDataset(datasetPath: string): { data: any[]; format: DatasetFormat } {
108
+ const datasetFullPath = path.resolve(datasetPath);
109
+ const rawData = fs.readFileSync(datasetFullPath, 'utf8');
110
+ const format = detectDatasetFormat(datasetFullPath);
111
+
112
+ if (format === 'json') {
113
+ const parsed = JSON.parse(rawData);
114
+ if (!Array.isArray(parsed)) {
115
+ throw new Error('Dataset JSON must be an array of records');
116
+ }
117
+ return { data: parsed, format };
118
+ }
119
+
120
+ const parsed = parseCsv(rawData);
121
+ return { data: parsed, format };
122
+ }
123
+
45
124
  class CLIHandler {
46
125
  private run: (...args: any[]) => Promise<any>;
47
126
 
@@ -59,10 +138,7 @@ class CLIHandler {
59
138
  const options = program.opts();
60
139
  const { datasetPath, outputDir } = options;
61
140
 
62
- // Load dataset
63
- const datasetFullPath = path.resolve(datasetPath);
64
- const rawData = fs.readFileSync(datasetFullPath, 'utf8');
65
- const dataset = JSON.parse(rawData);
141
+ const { data: dataset } = loadDataset(datasetPath);
66
142
 
67
143
  // Process each item in the dataset dynamically
68
144
  Promise.all<Output>(
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const VERSION = '0.24.3'; // x-release-please-version
1
+ export const VERSION = '0.25.0'; // x-release-please-version
package/version.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.24.3";
1
+ export declare const VERSION = "0.25.0";
2
2
  //# sourceMappingURL=version.d.mts.map
package/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "0.24.3";
1
+ export declare const VERSION = "0.25.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/version.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.VERSION = void 0;
4
- exports.VERSION = '0.24.3'; // x-release-please-version
4
+ exports.VERSION = '0.25.0'; // x-release-please-version
5
5
  //# sourceMappingURL=version.js.map
package/version.mjs CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = '0.24.3'; // x-release-please-version
1
+ export const VERSION = '0.25.0'; // x-release-please-version
2
2
  //# sourceMappingURL=version.mjs.map