@mrfylke/nsr-barcode-generator 1.2.0 → 1.4.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/README.md CHANGED
@@ -50,7 +50,7 @@ interface PdfGenerationOptions {
50
50
  orientation?: "landscape" | "portrait"; // default "landscape"
51
51
  style?: PdfStyleConfig; // colors/logo, see below
52
52
  overwrite?: boolean; // replace existing files (default false = skip)
53
- onProgress?: (event: PdfProgressEvent) => void;
53
+ onProgress?: (event: PdfProgressEvent) => void; // see "Result & progress" below
54
54
 
55
55
  // Custom QR payload. Called once metadata is resolved; the returned
56
56
  // string is used verbatim (no rewriting). Must be an absolute http(s)
@@ -117,7 +117,27 @@ interface PdfGenerationResult {
117
117
  outputDirectory: string;
118
118
  }
119
119
 
120
- interface PdfProgressEvent {
120
+ // Discriminated union on `type`. Fetching events precede generation events.
121
+ type PdfProgressEvent =
122
+ | DataFetchingProgressEvent
123
+ | DataFetchingBatchProgressEvent
124
+ | GenerationProgressEvent;
125
+
126
+ interface DataFetchingProgressEvent {
127
+ type: "data-fetching";
128
+ current: number; total: number; nsrId: string;
129
+ status: "fetched" | "error";
130
+ error?: string;
131
+ }
132
+
133
+ // Fired once per batch of Entur lookups, right before the delay ahead of the next batch.
134
+ interface DataFetchingBatchProgressEvent {
135
+ type: "data-fetching-batch";
136
+ batchNumber: number; totalBatches: number; delayMs: number;
137
+ }
138
+
139
+ interface GenerationProgressEvent {
140
+ type: "generation";
121
141
  current: number; total: number; nsrId: string;
122
142
  outputPath?: string;
123
143
  status: "generated" | "skipped" | "error";
@@ -125,11 +145,11 @@ interface PdfProgressEvent {
125
145
  }
126
146
  ```
127
147
 
128
- `onProgress` fires once per requested ID. One item failing never aborts the batch.
148
+ `onProgress` first fires once per ID needing an Entur lookup (`type: "data-fetching"`), with a `type: "data-fetching-batch"` event between batches while fetches are throttled, then once per requested ID as PDFs are written (`type: "generation"`). One item failing never aborts the batch. Fetching events (including batch events) are only emitted for the built-in Entur client - a custom `stopPlaceFetcher` does not report fetch progress.
129
149
 
130
150
  ### Types
131
151
 
132
- `ProcessFileOptions/Result`, `GenerateSinglePdfOptions/Result`, `PdfGenerationOptions/Result`, `PdfProgressEvent`, `PdfStyleConfig`, `StopPlaceQrContext`, `StopPlaceId`/`StopPlaceInput`/`StopPlaceRequest`, `ValidationResult`, `IdParseResult`/`IdParseError` are all exported.
152
+ `ProcessFileOptions/Result`, `GenerateSinglePdfOptions/Result`, `PdfGenerationOptions/Result`, `PdfProgressEvent`, `DataFetchingProgressEvent`, `DataFetchingBatchProgressEvent`, `GenerationProgressEvent`, `PdfStyleConfig`, `StopPlaceQrContext`, `StopPlaceId`/`StopPlaceInput`/`StopPlaceRequest`, `ValidationResult`, `IdParseResult`/`IdParseError` are all exported.
133
153
 
134
154
  ### NSR ID format & filenames
135
155
 
@@ -149,6 +169,8 @@ nsr-barcode validate NSR:StopPlace:39598 # check ID format only
149
169
  nsr-barcode parse ids.txt # list unique IDs, no PDFs
150
170
  ```
151
171
 
172
+ `file` and `id` print one line per `onProgress` event as they happen - Entur lookups first (`[fetching n/total] ...`), with a `Processed batch n/total. Waiting <ms>ms before next batch...` line whenever fetches are large enough to be throttled into batches, then PDF writes (`[generating n/total] ...`) - followed by the final summary.
173
+
152
174
  ## Embeddability
153
175
 
154
176
  Fonts (bundled Poppins) and images resolve relative to the package's own install location, not `process.cwd()` - safe inside a packaged desktop app with a read-only install dir. Nothing is downloaded or cached to disk at runtime; a bundled font that fails to read falls back to Helvetica.
Binary file
Binary file
package/dist/api.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import { formatIdCountResult, IdParseError, IdParseResult } from "./utils/idParser";
2
- import { PdfGenerationOptions, PdfGenerationResult, PdfGenerationItemResult, PdfGenerationFailure, PdfProgressEvent, PdfStyleConfig, StopPlaceQrContext, StopPlaceId, StopPlaceInput, StopPlaceRequest } from "./utils/pdfGenerator";
3
2
  import { extractStopPlaceNumber } from "./utils/nsrId";
3
+ import { DataFetchingBatchProgressEvent, DataFetchingProgressEvent, GenerationProgressEvent, PdfGenerationFailure, PdfGenerationItemResult, PdfGenerationOptions, PdfGenerationResult, PdfProgressEvent, PdfStyleConfig, StopPlaceId, StopPlaceInput, StopPlaceQrContext, StopPlaceRequest } from "./utils/pdfGenerator";
4
4
  interface CommonPdfOptions {
5
5
  assetsDirectory?: string;
6
6
  format?: "A4" | "A3" | "Letter";
@@ -36,14 +36,20 @@ export interface ValidationResult {
36
36
  isValid: boolean;
37
37
  error?: string;
38
38
  }
39
- export declare class NsrBarcodeApi {
40
- static processFile(options: ProcessFileOptions): Promise<ProcessFileResult>;
41
- static generateSinglePdf(options: GenerateSinglePdfOptions): Promise<GenerateSinglePdfResult>;
42
- static generateMultiplePdfs(stopPlaces: StopPlaceRequest[], options: PdfGenerationOptions): Promise<PdfGenerationResult>;
43
- static validateNsrId(nsrId: string): ValidationResult;
44
- static parseIds(content: string): Promise<IdParseResult>;
45
- static parseIdsFromFile(filePath: string): Promise<IdParseResult>;
46
- }
47
- export { IdParseResult, IdParseError, PdfGenerationOptions, PdfGenerationResult, PdfGenerationItemResult, PdfGenerationFailure, PdfProgressEvent, PdfStyleConfig, StopPlaceQrContext, StopPlaceId, StopPlaceInput, StopPlaceRequest, formatIdCountResult, extractStopPlaceNumber, };
39
+ declare function validateNsrId(nsrId: string): ValidationResult;
40
+ declare function processFile(options: ProcessFileOptions): Promise<ProcessFileResult>;
41
+ declare function generateSinglePdf(options: GenerateSinglePdfOptions): Promise<GenerateSinglePdfResult>;
42
+ declare function generateMultiplePdfs(stopPlaces: StopPlaceRequest[], options: PdfGenerationOptions): Promise<PdfGenerationResult>;
43
+ declare function parseIds(content: string): Promise<IdParseResult>;
44
+ declare function parseIdsFromFile(filePath: string): Promise<IdParseResult>;
45
+ export declare const NsrBarcodeApi: {
46
+ processFile: typeof processFile;
47
+ generateSinglePdf: typeof generateSinglePdf;
48
+ generateMultiplePdfs: typeof generateMultiplePdfs;
49
+ validateNsrId: typeof validateNsrId;
50
+ parseIds: typeof parseIds;
51
+ parseIdsFromFile: typeof parseIdsFromFile;
52
+ };
53
+ export { DataFetchingBatchProgressEvent, DataFetchingProgressEvent, extractStopPlaceNumber, formatIdCountResult, GenerationProgressEvent, IdParseError, IdParseResult, PdfGenerationFailure, PdfGenerationItemResult, PdfGenerationOptions, PdfGenerationResult, PdfProgressEvent, PdfStyleConfig, StopPlaceId, StopPlaceInput, StopPlaceQrContext, StopPlaceRequest, };
48
54
  export default NsrBarcodeApi;
49
55
  //# sourceMappingURL=api.d.ts.map
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAMA,OAAO,EAEL,mBAAmB,EACnB,YAAY,EACZ,aAAa,EACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAEL,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAyB,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAM9E,UAAU,gBAAgB;IAExB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IAEhC,WAAW,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IAEvC,KAAK,CAAC,EAAE,cAAc,CAAC;IAKvB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAE1D,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAS5D,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAKD,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAE1D,QAAQ,EAAE,MAAM,CAAC;IAEjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,WAAW,EAAE,aAAa,CAAC;IAE3B,SAAS,EAAE,mBAAmB,CAAC;IAE/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAEhE,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,EAAE,MAAM,CAAC;IAKxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAKD,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,mBAAmB,CAAC;IAE/B,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA4CD,qBAAa,aAAa;IAMxB,OAAa,WAAW,CACtB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAqC5B;IAOD,OAAa,iBAAiB,CAC5B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAiClC;IAYD,OAAa,oBAAoB,CAC/B,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAW9B;IAOD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiBpD;IAOD,OAAa,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAE7D;IAOD,OAAa,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAGtE;CACF;AAGD,OAAO,EACL,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,uBAAuB,EACvB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,mBAAmB,EACnB,sBAAsB,GACvB,CAAC;eAGa,aAAa"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,mBAAmB,EACnB,YAAY,EACZ,aAAa,EAEd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,sBAAsB,EAAyB,MAAM,eAAe,CAAC;AAC9E,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,uBAAuB,EAEvB,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,sBAAsB,CAAC;AAM9B,UAAU,gBAAgB;IAExB,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,QAAQ,CAAC;IAEhC,WAAW,CAAC,EAAE,WAAW,GAAG,UAAU,CAAC;IAEvC,KAAK,CAAC,EAAE,cAAc,CAAC;IAKvB,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,kBAAkB,KAAK,MAAM,CAAC;IAE1D,SAAS,CAAC,EAAE,OAAO,CAAC;IAOpB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAE/C,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;IAS5D,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAKD,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAE1D,QAAQ,EAAE,MAAM,CAAC;IAEjB,eAAe,EAAE,MAAM,CAAC;CACzB;AAKD,MAAM,WAAW,iBAAiB;IAEhC,WAAW,EAAE,aAAa,CAAC;IAE3B,SAAS,EAAE,mBAAmB,CAAC;IAE/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,wBAAyB,SAAQ,gBAAgB;IAEhE,KAAK,EAAE,MAAM,CAAC;IAEd,eAAe,EAAE,MAAM,CAAC;IAKxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAKD,MAAM,WAAW,uBAAuB;IAEtC,SAAS,EAAE,mBAAmB,CAAC;IAE/B,OAAO,EAAE,OAAO,CAAC;IAEjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,MAAM,WAAW,gBAAgB;IAE/B,OAAO,EAAE,OAAO,CAAC;IAEjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AA8CD,iBAAS,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAiBtD;AAOD,iBAAe,WAAW,CACxB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,iBAAiB,CAAC,CAwC5B;AAOD,iBAAe,iBAAiB,CAC9B,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,uBAAuB,CAAC,CAkClC;AAYD,iBAAe,oBAAoB,CACjC,UAAU,EAAE,gBAAgB,EAAE,EAC9B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAW9B;AAOD,iBAAe,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAE/D;AAOD,iBAAe,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAGxE;AAKD,eAAO,MAAM,aAAa;;;;;;;CAOzB,CAAC;AAGF,OAAO,EACL,8BAA8B,EAC9B,yBAAyB,EACzB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,oBAAoB,EACpB,uBAAuB,EACvB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GACjB,CAAC;eAGa,aAAa"}
package/dist/api.js CHANGED
@@ -1,12 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.extractStopPlaceNumber = exports.formatIdCountResult = exports.NsrBarcodeApi = void 0;
3
+ exports.formatIdCountResult = exports.extractStopPlaceNumber = exports.NsrBarcodeApi = void 0;
4
4
  const fileReader_1 = require("./utils/fileReader");
5
5
  const idParser_1 = require("./utils/idParser");
6
6
  Object.defineProperty(exports, "formatIdCountResult", { enumerable: true, get: function () { return idParser_1.formatIdCountResult; } });
7
- const pdfGenerator_1 = require("./utils/pdfGenerator");
8
7
  const nsrId_1 = require("./utils/nsrId");
9
8
  Object.defineProperty(exports, "extractStopPlaceNumber", { enumerable: true, get: function () { return nsrId_1.extractStopPlaceNumber; } });
9
+ const pdfGenerator_1 = require("./utils/pdfGenerator");
10
10
  function buildPdfOptions(outputDirectory, options) {
11
11
  const pdfOptions = { outputDirectory };
12
12
  if (options.assetsDirectory) {
@@ -38,99 +38,104 @@ function buildPdfOptions(outputDirectory, options) {
38
38
  }
39
39
  return pdfOptions;
40
40
  }
41
- class NsrBarcodeApi {
42
- static async processFile(options) {
43
- const { filePath, outputDirectory } = options;
44
- try {
45
- const content = await (0, fileReader_1.readFile)(filePath);
46
- const parseResult = await (0, idParser_1.parseUniqueIds)(content);
47
- const uniqueIdsArray = Array.from(parseResult.uniqueIds);
48
- for (const nsrId of uniqueIdsArray) {
49
- const validation = this.validateNsrId(nsrId);
50
- if (!validation.isValid) {
51
- throw new Error(`Invalid NSR ID "${nsrId}": ${validation.error}`);
52
- }
53
- }
54
- const pdfOptions = buildPdfOptions(outputDirectory, options);
55
- const pdfResult = await (0, pdfGenerator_1.generatePdfsForStopPlaces)(uniqueIdsArray, pdfOptions);
56
- const parseSummary = (0, idParser_1.formatIdCountResult)(parseResult);
57
- const pdfSummary = `Generated ${pdfResult.totalGenerated} PDF files in ${pdfResult.outputDirectory}`;
58
- const summary = `${parseSummary}\n\n${pdfSummary}`;
59
- return {
60
- parseResult,
61
- pdfResult,
62
- summary,
63
- };
64
- }
65
- catch (error) {
66
- if (error instanceof Error) {
67
- throw error;
68
- }
69
- throw new Error("An unexpected error occurred during file processing");
70
- }
41
+ function validateNsrId(nsrId) {
42
+ if (!nsrId) {
43
+ return {
44
+ isValid: false,
45
+ error: "NSR ID cannot be empty",
46
+ };
71
47
  }
72
- static async generateSinglePdf(options) {
73
- const { nsrId, outputDirectory, name, transportMode } = options;
74
- try {
75
- const validation = this.validateNsrId(nsrId);
76
- if (!validation.isValid) {
77
- throw new Error(validation.error);
78
- }
79
- const request = name
80
- ? { id: nsrId, name, ...(transportMode ? { transportMode } : {}) }
81
- : nsrId;
82
- const pdfOptions = buildPdfOptions(outputDirectory, options);
83
- const pdfResult = await (0, pdfGenerator_1.generatePdfsForStopPlaces)([request], pdfOptions);
84
- const success = pdfResult.totalGenerated > 0 || pdfResult.skipped.length > 0;
85
- const summary = success
86
- ? `Successfully generated PDF for ${nsrId} in ${pdfResult.outputDirectory}`
87
- : `Failed to generate PDF for ${nsrId}`;
88
- return {
89
- pdfResult,
90
- success,
91
- summary,
92
- };
93
- }
94
- catch (error) {
95
- if (error instanceof Error) {
96
- throw error;
97
- }
98
- throw new Error("An unexpected error occurred during PDF generation");
99
- }
48
+ if (!(0, nsrId_1.isValidNsrStopPlaceId)(nsrId)) {
49
+ return {
50
+ isValid: false,
51
+ error: "Invalid NSR ID format. Expected format: NSR:StopPlace:<digits> with no extra whitespace or characters",
52
+ };
100
53
  }
101
- static async generateMultiplePdfs(stopPlaces, options) {
102
- for (const request of stopPlaces) {
103
- const nsrId = typeof request === "string" ? request : request.id;
104
- const validation = this.validateNsrId(nsrId);
54
+ return { isValid: true };
55
+ }
56
+ async function processFile(options) {
57
+ const { filePath, outputDirectory } = options;
58
+ try {
59
+ const content = await (0, fileReader_1.readFile)(filePath);
60
+ const parseResult = await (0, idParser_1.parseUniqueIds)(content);
61
+ const uniqueIdsArray = Array.from(parseResult.uniqueIds);
62
+ for (const nsrId of uniqueIdsArray) {
63
+ const validation = validateNsrId(nsrId);
105
64
  if (!validation.isValid) {
106
65
  throw new Error(`Invalid NSR ID "${nsrId}": ${validation.error}`);
107
66
  }
108
67
  }
109
- return (0, pdfGenerator_1.generatePdfsForStopPlaces)(stopPlaces, options);
110
- }
111
- static validateNsrId(nsrId) {
112
- if (!nsrId) {
113
- return {
114
- isValid: false,
115
- error: "NSR ID cannot be empty",
116
- };
68
+ const pdfOptions = buildPdfOptions(outputDirectory, options);
69
+ const pdfResult = await (0, pdfGenerator_1.generatePdfsForStopPlaces)(uniqueIdsArray, pdfOptions);
70
+ const parseSummary = (0, idParser_1.formatIdCountResult)(parseResult);
71
+ const pdfSummary = `Generated ${pdfResult.totalGenerated} PDF files in ${pdfResult.outputDirectory}`;
72
+ const summary = `${parseSummary}\n\n${pdfSummary}`;
73
+ return {
74
+ parseResult,
75
+ pdfResult,
76
+ summary,
77
+ };
78
+ }
79
+ catch (error) {
80
+ if (error instanceof Error) {
81
+ throw error;
117
82
  }
118
- if (!(0, nsrId_1.isValidNsrStopPlaceId)(nsrId)) {
119
- return {
120
- isValid: false,
121
- error: "Invalid NSR ID format. Expected format: NSR:StopPlace:<digits> with no extra whitespace or characters",
122
- };
83
+ throw new Error("An unexpected error occurred during file processing");
84
+ }
85
+ }
86
+ async function generateSinglePdf(options) {
87
+ const { nsrId, outputDirectory, name, transportMode } = options;
88
+ try {
89
+ const validation = validateNsrId(nsrId);
90
+ if (!validation.isValid) {
91
+ throw new Error(validation.error);
123
92
  }
124
- return { isValid: true };
93
+ const request = name
94
+ ? { id: nsrId, name, ...(transportMode ? { transportMode } : {}) }
95
+ : nsrId;
96
+ const pdfOptions = buildPdfOptions(outputDirectory, options);
97
+ const pdfResult = await (0, pdfGenerator_1.generatePdfsForStopPlaces)([request], pdfOptions);
98
+ const success = pdfResult.totalGenerated > 0 || pdfResult.skipped.length > 0;
99
+ const summary = success
100
+ ? `Successfully generated PDF for ${nsrId} in ${pdfResult.outputDirectory}`
101
+ : `Failed to generate PDF for ${nsrId}`;
102
+ return {
103
+ pdfResult,
104
+ success,
105
+ summary,
106
+ };
125
107
  }
126
- static async parseIds(content) {
127
- return (0, idParser_1.parseUniqueIds)(content);
108
+ catch (error) {
109
+ if (error instanceof Error) {
110
+ throw error;
111
+ }
112
+ throw new Error("An unexpected error occurred during PDF generation");
128
113
  }
129
- static async parseIdsFromFile(filePath) {
130
- const content = await (0, fileReader_1.readFile)(filePath);
131
- return (0, idParser_1.parseUniqueIds)(content);
114
+ }
115
+ async function generateMultiplePdfs(stopPlaces, options) {
116
+ for (const request of stopPlaces) {
117
+ const nsrId = typeof request === "string" ? request : request.id;
118
+ const validation = validateNsrId(nsrId);
119
+ if (!validation.isValid) {
120
+ throw new Error(`Invalid NSR ID "${nsrId}": ${validation.error}`);
121
+ }
132
122
  }
123
+ return (0, pdfGenerator_1.generatePdfsForStopPlaces)(stopPlaces, options);
124
+ }
125
+ async function parseIds(content) {
126
+ return (0, idParser_1.parseUniqueIds)(content);
127
+ }
128
+ async function parseIdsFromFile(filePath) {
129
+ const content = await (0, fileReader_1.readFile)(filePath);
130
+ return (0, idParser_1.parseUniqueIds)(content);
133
131
  }
134
- exports.NsrBarcodeApi = NsrBarcodeApi;
135
- exports.default = NsrBarcodeApi;
132
+ exports.NsrBarcodeApi = {
133
+ processFile,
134
+ generateSinglePdf,
135
+ generateMultiplePdfs,
136
+ validateNsrId,
137
+ parseIds,
138
+ parseIdsFromFile,
139
+ };
140
+ exports.default = exports.NsrBarcodeApi;
136
141
  //# sourceMappingURL=api.js.map
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -2,9 +2,32 @@
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
4
  const commander_1 = require("commander");
5
- const api_1 = require("./api");
6
5
  const package_json_1 = require("../package.json");
6
+ const api_1 = require("./api");
7
7
  const program = new commander_1.Command();
8
+ function logProgress(event) {
9
+ if (event.type === "data-fetching") {
10
+ if (event.status === "error") {
11
+ console.log(`[fetching ${event.current}/${event.total}] ${event.nsrId} - failed: ${event.error}`);
12
+ }
13
+ return;
14
+ }
15
+ if (event.type === "data-fetching-batch") {
16
+ console.log(`Processed batch ${event.batchNumber}/${event.totalBatches}. Waiting ${event.delayMs}ms before next batch...`);
17
+ return;
18
+ }
19
+ switch (event.status) {
20
+ case "generated":
21
+ console.log(`[generating ${event.current}/${event.total}] ${event.nsrId} -> ${event.outputPath}`);
22
+ break;
23
+ case "skipped":
24
+ console.log(`[generating ${event.current}/${event.total}] ${event.nsrId} - skipped (already exists)`);
25
+ break;
26
+ case "error":
27
+ console.log(`[generating ${event.current}/${event.total}] ${event.nsrId} - failed: ${event.error}`);
28
+ break;
29
+ }
30
+ }
8
31
  program
9
32
  .name("nsr-barcode")
10
33
  .description("Generate PDF files for unique IDs from input files")
@@ -61,6 +84,7 @@ program
61
84
  const processOptions = {
62
85
  filePath,
63
86
  outputDirectory: options.output,
87
+ onProgress: logProgress,
64
88
  };
65
89
  if (format && format !== "A4") {
66
90
  processOptions.format = format;
@@ -75,7 +99,7 @@ program
75
99
  processOptions.overwrite = true;
76
100
  }
77
101
  const result = await api_1.NsrBarcodeApi.processFile(processOptions);
78
- console.log("\n" + result.summary);
102
+ console.log(`\n${result.summary}`);
79
103
  const uniqueIdsCount = result.parseResult.uniqueIds.size;
80
104
  if (result.pdfResult.totalGenerated !== uniqueIdsCount) {
81
105
  console.warn(`\nWarning: Only ${result.pdfResult.totalGenerated} of ${uniqueIdsCount} PDFs were generated successfully`);
@@ -137,6 +161,7 @@ program
137
161
  const generateOptions = {
138
162
  nsrId,
139
163
  outputDirectory: options.output,
164
+ onProgress: logProgress,
140
165
  };
141
166
  if (format && format !== "A4") {
142
167
  generateOptions.format = format;
@@ -151,7 +176,7 @@ program
151
176
  generateOptions.overwrite = true;
152
177
  }
153
178
  const result = await api_1.NsrBarcodeApi.generateSinglePdf(generateOptions);
154
- console.log("\n" + result.summary);
179
+ console.log(`\n${result.summary}`);
155
180
  if (!result.success) {
156
181
  console.error(`Error: Failed to generate PDF for ID: ${nsrId}`);
157
182
  process.exit(1);
@@ -184,7 +209,7 @@ program
184
209
  console.log(`Parsing file: ${filePath}`);
185
210
  const result = await api_1.NsrBarcodeApi.parseIdsFromFile(filePath);
186
211
  const summary = require("./utils/idParser").formatIdCountResult(result);
187
- console.log("\n" + summary);
212
+ console.log(`\n${summary}`);
188
213
  console.log(`\nUnique IDs found:`);
189
214
  Array.from(result.uniqueIds).forEach((id, index) => {
190
215
  console.log(`${index + 1}. ${id}`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -2,16 +2,16 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getAssetPath = getAssetPath;
4
4
  exports.resolveAssetPath = resolveAssetPath;
5
- const path_1 = require("path");
5
+ const node_path_1 = require("node:path");
6
6
  function getPackageRoot() {
7
- return (0, path_1.join)(__dirname, "..", "..");
7
+ return (0, node_path_1.join)(__dirname, "..", "..");
8
8
  }
9
9
  function getAssetPath(...segments) {
10
- return (0, path_1.join)(getPackageRoot(), "assets", ...segments);
10
+ return (0, node_path_1.join)(getPackageRoot(), "assets", ...segments);
11
11
  }
12
12
  function resolveAssetPath(assetsDirectory, ...segments) {
13
13
  return assetsDirectory
14
- ? (0, path_1.join)(assetsDirectory, ...segments)
14
+ ? (0, node_path_1.join)(assetsDirectory, ...segments)
15
15
  : getAssetPath(...segments);
16
16
  }
17
17
  //# sourceMappingURL=assets.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":";;;;AAAA,+BAA4B;AAa5B,SAAS,cAAc;IACrB,OAAO,IAAA,WAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,sBAA6B,GAAG,QAAkB;IAChD,OAAO,IAAA,WAAI,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,CAAC;AAOD,0BACE,eAAmC,EACnC,GAAG,QAAkB;IAErB,OAAO,eAAe;QACpB,CAAC,CAAC,IAAA,WAAI,EAAC,eAAe,EAAE,GAAG,QAAQ,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;AAChC,CAAC"}
1
+ {"version":3,"file":"assets.js","sourceRoot":"","sources":["../../src/utils/assets.ts"],"names":[],"mappings":";;;;AAAA,yCAAiC;AAajC,SAAS,cAAc;IACrB,OAAO,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AACrC,CAAC;AAED,sBAA6B,GAAG,QAAkB;IAChD,OAAO,IAAA,gBAAI,EAAC,cAAc,EAAE,EAAE,QAAQ,EAAE,GAAG,QAAQ,CAAC,CAAC;AACvD,CAAC;AAOD,0BACE,eAAmC,EACnC,GAAG,QAAkB;IAErB,OAAO,eAAe;QACpB,CAAC,CAAC,IAAA,gBAAI,EAAC,eAAe,EAAE,GAAG,QAAQ,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC,GAAG,QAAQ,CAAC,CAAC;AAChC,CAAC"}
@@ -21,6 +21,18 @@ export interface RetryConfig {
21
21
  maxDelay: number;
22
22
  backoffMultiplier: number;
23
23
  }
24
+ export interface StopPlaceFetchProgressEvent {
25
+ current: number;
26
+ total: number;
27
+ nsrId: string;
28
+ status: "fetched" | "error";
29
+ error?: string;
30
+ }
31
+ export interface StopPlaceBatchProgressEvent {
32
+ batchNumber: number;
33
+ totalBatches: number;
34
+ delayMs: number;
35
+ }
24
36
  export declare class EnturApiClient {
25
37
  private readonly baseUrl;
26
38
  private readonly clientName;
@@ -33,6 +45,8 @@ export declare class EnturApiClient {
33
45
  batchSize?: number;
34
46
  delayBetweenBatches?: number;
35
47
  concurrency?: number;
48
+ onProgress?: (event: StopPlaceFetchProgressEvent) => void;
49
+ onBatchComplete?: (event: StopPlaceBatchProgressEvent) => void;
36
50
  }): Promise<(StopPlaceInfo | null)[]>;
37
51
  private processBatchWithConcurrency;
38
52
  private parseStopPlaceResponse;
@@ -1 +1 @@
1
- {"version":3,"file":"enturApi.d.ts","sourceRoot":"","sources":["../../src/utils/enturApi.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,IAAI,EACA,WAAW,GACX,WAAW,GACX,eAAe,GACf,YAAY,GACZ,cAAc,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,YACE,UAAU,GAAE,MAAgC,EAC5C,WAAW,GAAE,OAAO,CAAC,WAAW,CAAM,EAUvC;YAMa,KAAK;IAUnB,OAAO,CAAC,mBAAmB;IAkBrB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA8I9D;IAQK,qBAAqB,CACzB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;KACjB,GACL,OAAO,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAgCnC;YAQa,2BAA2B;IA0CzC,OAAO,CAAC,sBAAsB;CAoD/B;AAQD,wBAAgB,6BAA6B,CAC3C,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAOhB;AAKD,eAAO,MAAM,QAAQ,gBAAuB,CAAC"}
1
+ {"version":3,"file":"enturApi.d.ts","sourceRoot":"","sources":["../../src/utils/enturApi.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,aAAc,SAAQ,KAAK;IAC1C,IAAI,EACA,WAAW,GACX,WAAW,GACX,eAAe,GACf,YAAY,GACZ,cAAc,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AA0BD,MAAM,WAAW,2BAA2B;IAC1C,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAOD,MAAM,WAAW,2BAA2B;IAC1C,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;CACjB;AAKD,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IACjE,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAE1C,YACE,UAAU,GAAE,MAAgC,EAC5C,WAAW,GAAE,OAAO,CAAC,WAAW,CAAM,EAUvC;YAMa,KAAK;IAUnB,OAAO,CAAC,mBAAmB;IAkBrB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6I9D;IAQK,qBAAqB,CACzB,YAAY,EAAE,MAAM,EAAE,EACtB,OAAO,GAAE;QACP,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,mBAAmB,CAAC,EAAE,MAAM,CAAC;QAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;QAErB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;QAE1D,eAAe,CAAC,EAAE,CAAC,KAAK,EAAE,2BAA2B,KAAK,IAAI,CAAC;KAC3D,GACL,OAAO,CAAC,CAAC,aAAa,GAAG,IAAI,CAAC,EAAE,CAAC,CAkDnC;YAQa,2BAA2B;IAiDzC,OAAO,CAAC,sBAAsB;CAuD/B;AAQD,wBAAgB,6BAA6B,CAC3C,UAAU,CAAC,EAAE,MAAM,GAClB,cAAc,CAOhB;AAKD,eAAO,MAAM,QAAQ,gBAAuB,CAAC"}
@@ -28,7 +28,7 @@ class EnturApiClient {
28
28
  return Math.min(retryAfter * 1000, this.retryConfig.maxDelay);
29
29
  }
30
30
  const delay = this.retryConfig.baseDelay *
31
- Math.pow(this.retryConfig.backoffMultiplier, attempt);
31
+ this.retryConfig.backoffMultiplier ** attempt;
32
32
  return Math.min(delay, this.retryConfig.maxDelay);
33
33
  }
34
34
  async getStopPlace(stopPlaceId) {
@@ -108,7 +108,6 @@ class EnturApiClient {
108
108
  const delay = this.calculateRetryDelay(attempt);
109
109
  console.warn(`Unknown error for stop place ${stopPlaceId}. Retrying in ${delay}ms (attempt ${attempt + 1}/${this.retryConfig.maxRetries})`);
110
110
  await this.sleep(delay);
111
- continue;
112
111
  }
113
112
  }
114
113
  }
@@ -117,20 +116,38 @@ class EnturApiClient {
117
116
  throw unknownError;
118
117
  }
119
118
  async getMultipleStopPlaces(stopPlaceIds, options = {}) {
120
- const { batchSize = 100, delayBetweenBatches = 1000, concurrency = 5, } = options;
119
+ const { batchSize = 100, delayBetweenBatches = 1000, concurrency = 5, onProgress, onBatchComplete, } = options;
121
120
  const results = [];
121
+ const total = stopPlaceIds.length;
122
+ let completed = 0;
123
+ const onItemDone = onProgress
124
+ ? (id, status, error) => {
125
+ completed++;
126
+ onProgress({
127
+ current: completed,
128
+ total,
129
+ nsrId: id,
130
+ status,
131
+ ...(error ? { error } : {}),
132
+ });
133
+ }
134
+ : undefined;
122
135
  for (let i = 0; i < stopPlaceIds.length; i += batchSize) {
123
136
  const batch = stopPlaceIds.slice(i, i + batchSize);
124
- const batchResults = await this.processBatchWithConcurrency(batch, concurrency);
137
+ const batchResults = await this.processBatchWithConcurrency(batch, concurrency, onItemDone);
125
138
  results.push(...batchResults);
126
139
  if (i + batchSize < stopPlaceIds.length) {
127
- console.log(`Processed batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(stopPlaceIds.length / batchSize)}. Waiting ${delayBetweenBatches}ms before next batch...`);
140
+ onBatchComplete?.({
141
+ batchNumber: Math.floor(i / batchSize) + 1,
142
+ totalBatches: Math.ceil(stopPlaceIds.length / batchSize),
143
+ delayMs: delayBetweenBatches,
144
+ });
128
145
  await this.sleep(delayBetweenBatches);
129
146
  }
130
147
  }
131
148
  return results;
132
149
  }
133
- async processBatchWithConcurrency(stopPlaceIds, concurrency) {
150
+ async processBatchWithConcurrency(stopPlaceIds, concurrency, onItemDone) {
134
151
  const results = new Array(stopPlaceIds.length);
135
152
  for (let i = 0; i < stopPlaceIds.length; i += concurrency) {
136
153
  const chunk = stopPlaceIds.slice(i, i + concurrency);
@@ -139,10 +156,12 @@ class EnturApiClient {
139
156
  try {
140
157
  const result = await this.getStopPlace(id);
141
158
  results[globalIndex] = result;
159
+ onItemDone?.(id, "fetched");
142
160
  }
143
161
  catch (error) {
144
162
  console.warn(`Failed to fetch stop place ${id}:`, error.message);
145
163
  results[globalIndex] = null;
164
+ onItemDone?.(id, "error", error.message);
146
165
  }
147
166
  });
148
167
  await Promise.allSettled(chunkPromises);
@@ -158,18 +177,18 @@ class EnturApiClient {
158
177
  };
159
178
  try {
160
179
  if (data) {
161
- if (data.name?.value) {
162
- stopPlace.name = data.name.value;
163
- }
164
- else if (typeof data.name === "string") {
180
+ if (typeof data.name === "string") {
165
181
  stopPlace.name = data.name;
166
182
  }
167
- if (data.description?.value) {
168
- stopPlace.description = data.description.value;
183
+ else if (data.name?.value) {
184
+ stopPlace.name = data.name.value;
169
185
  }
170
- else if (typeof data.description === "string") {
186
+ if (typeof data.description === "string") {
171
187
  stopPlace.description = data.description;
172
188
  }
189
+ else if (data.description?.value) {
190
+ stopPlace.description = data.description.value;
191
+ }
173
192
  if (data.transportMode) {
174
193
  stopPlace.transportMode = Array.isArray(data.transportMode)
175
194
  ? data.transportMode