cry-sloimena 1.0.6 → 1.0.8

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 (96) hide show
  1. package/dist/.tsbuildinfo +1 -1
  2. package/dist/{0-file-locations.d.ts → 0-file-locations.d.mts} +1 -1
  3. package/dist/{0-file-locations.js → 0-file-locations.mjs} +1 -1
  4. package/dist/data/{firmeDb.d.ts → firmeDb.d.mts} +1 -1
  5. package/dist/data/{imenaFirm.js → imenaFirm.mjs} +1 -1
  6. package/dist/index.d.mts +7 -0
  7. package/dist/index.mjs +7 -0
  8. package/dist/initializeData/{1-parse-opsiprs-csv.js → 1-parse-opsiprs-csv.mjs} +17 -15
  9. package/dist/{izlusci.d.ts → izlusci.d.mts} +1 -1
  10. package/dist/{izlusci.js → izlusci.mjs} +9 -3
  11. package/dist/{poisciFirme.d.ts → poisciFirme.d.mts} +1 -1
  12. package/dist/{poisciFirme.js → poisciFirme.mjs} +7 -7
  13. package/dist/runtime/izlusci.d.mts +2 -0
  14. package/dist/runtime/izlusci.mjs +188 -0
  15. package/dist/runtime/urediImePriimek.d.mts +2 -0
  16. package/dist/runtime/urediImePriimek.mjs +27 -0
  17. package/dist/test/{imena.test.js → imena.test.mjs} +1 -1
  18. package/dist/types/{PravnaOsebaNormalised.d.ts → PravnaOsebaNormalised.d.mts} +1 -1
  19. package/dist/{urediImePriimek.js → urediImePriimek.mjs} +4 -4
  20. package/dist/utils/{LegalFormSuffixes.js → LegalFormSuffixes.mjs} +1 -1
  21. package/dist/utils/{ObjectSortedListsMapper.js → ObjectSortedListsMapper.mjs} +1 -1
  22. package/dist/utils/{normalizeListOfNames.js → normalizeListOfNames.mjs} +1 -1
  23. package/dist/utils/{normalizeListOfStrings.js → normalizeListOfStrings.mjs} +1 -1
  24. package/dist/utils/{normalizeStringForSearch.js → normalizeStringForSearch.mjs} +2 -2
  25. package/dist/utils/{normalizirano.js → normalizirano.mjs} +4 -4
  26. package/package.json +1 -1
  27. package/src/0-file-locations.mts +3 -0
  28. package/src/data/{firmeDb.ts → firmeDb.mts} +1 -1
  29. package/src/data/imenaFirm.mts +5 -0
  30. package/src/index.mts +7 -0
  31. package/src/initializeData/{1-parse-opsiprs-csv.ts → 1-parse-opsiprs-csv.mts} +20 -16
  32. package/src/{izlusci.ts → izlusci.mts} +13 -7
  33. package/src/{poisciFirme.ts → poisciFirme.mts} +9 -9
  34. package/src/runtime/izlusci.mts +208 -0
  35. package/src/runtime/urediImePriimek.mts +33 -0
  36. package/src/test/{imena.test.ts → imena.test.mts} +1 -1
  37. package/src/types/{PravnaOsebaNormalised.ts → PravnaOsebaNormalised.mts} +1 -1
  38. package/src/{urediImePriimek.ts → urediImePriimek.mts} +4 -4
  39. package/src/utils/{LegalFormSuffixes.ts → LegalFormSuffixes.mts} +1 -1
  40. package/src/utils/{ObjectSortedListsMapper.ts → ObjectSortedListsMapper.mts} +1 -1
  41. package/src/utils/{normalizeListOfNames.ts → normalizeListOfNames.mts} +1 -1
  42. package/src/utils/{normalizeListOfStrings.ts → normalizeListOfStrings.mts} +1 -1
  43. package/src/utils/{normalizeStringForSearch.ts → normalizeStringForSearch.mts} +2 -2
  44. package/src/utils/{normalizirano.ts → normalizirano.mts} +4 -4
  45. package/dist/index.d.ts +0 -7
  46. package/dist/index.js +0 -7
  47. package/src/0-file-locations.ts +0 -3
  48. package/src/data/firmeDb.js +0 -7
  49. package/src/data/imenaFirm.ts +0 -5
  50. package/src/index.ts +0 -7
  51. package/src/types/PravnaOseba.js +0 -2
  52. /package/dist/data/{firmeDb.js → firmeDb.mjs} +0 -0
  53. /package/dist/data/{imenaFirm.d.ts → imenaFirm.d.mts} +0 -0
  54. /package/dist/data/{imenaM.d.ts → imenaM.d.mts} +0 -0
  55. /package/dist/data/{imenaM.js → imenaM.mjs} +0 -0
  56. /package/dist/data/{imenaZ.d.ts → imenaZ.d.mts} +0 -0
  57. /package/dist/data/{imenaZ.js → imenaZ.mjs} +0 -0
  58. /package/dist/data/{priimki.d.ts → priimki.d.mts} +0 -0
  59. /package/dist/data/{priimki.js → priimki.mjs} +0 -0
  60. /package/dist/{davcnaZaMaticno.d.ts → davcnaZaMaticno.d.mts} +0 -0
  61. /package/dist/{davcnaZaMaticno.js → davcnaZaMaticno.mjs} +0 -0
  62. /package/dist/initializeData/{1-parse-opsiprs-csv.d.ts → 1-parse-opsiprs-csv.d.mts} +0 -0
  63. /package/dist/test/{imena.test.d.ts → imena.test.d.mts} +0 -0
  64. /package/dist/types/{PravnaOseba.d.ts → PravnaOseba.d.mts} +0 -0
  65. /package/dist/types/{PravnaOseba.js → PravnaOseba.mjs} +0 -0
  66. /package/dist/types/{PravnaOsebaNormalised.js → PravnaOsebaNormalised.mjs} +0 -0
  67. /package/dist/{urediImePriimek.d.ts → urediImePriimek.d.mts} +0 -0
  68. /package/dist/utils/{LegalFormSuffixes.d.ts → LegalFormSuffixes.d.mts} +0 -0
  69. /package/dist/utils/{ObjectSortedListsMapper.d.ts → ObjectSortedListsMapper.d.mts} +0 -0
  70. /package/dist/utils/{SortedStringListMapper.d.ts → SortedStringListMapper.d.mts} +0 -0
  71. /package/dist/utils/{SortedStringListMapper.js → SortedStringListMapper.mjs} +0 -0
  72. /package/dist/utils/{WordsToObjectMapper.d.ts → WordsToObjectMapper.d.mts} +0 -0
  73. /package/dist/utils/{WordsToObjectMapper.js → WordsToObjectMapper.mjs} +0 -0
  74. /package/dist/utils/{binarySearch.d.ts → binarySearch.d.mts} +0 -0
  75. /package/dist/utils/{binarySearch.js → binarySearch.mjs} +0 -0
  76. /package/dist/utils/{findAny.d.ts → findAny.d.mts} +0 -0
  77. /package/dist/utils/{findAny.js → findAny.mjs} +0 -0
  78. /package/dist/utils/{normalizeListOfNames.d.ts → normalizeListOfNames.d.mts} +0 -0
  79. /package/dist/utils/{normalizeListOfStrings.d.ts → normalizeListOfStrings.d.mts} +0 -0
  80. /package/dist/utils/{normalizeStringForSearch.d.ts → normalizeStringForSearch.d.mts} +0 -0
  81. /package/dist/utils/{normalizeWordOrSeparator.d.ts → normalizeWordOrSeparator.d.mts} +0 -0
  82. /package/dist/utils/{normalizeWordOrSeparator.js → normalizeWordOrSeparator.mjs} +0 -0
  83. /package/dist/utils/{normalizirano.d.ts → normalizirano.d.mts} +0 -0
  84. /package/dist/utils/{tokenizeIme.d.ts → tokenizeIme.d.mts} +0 -0
  85. /package/dist/utils/{tokenizeIme.js → tokenizeIme.mjs} +0 -0
  86. /package/src/data/{imenaM.ts → imenaM.mts} +0 -0
  87. /package/src/data/{imenaZ.ts → imenaZ.mts} +0 -0
  88. /package/src/data/{priimki.ts → priimki.mts} +0 -0
  89. /package/src/{davcnaZaMaticno.ts → davcnaZaMaticno.mts} +0 -0
  90. /package/src/types/{PravnaOseba.ts → PravnaOseba.mts} +0 -0
  91. /package/src/utils/{SortedStringListMapper.ts → SortedStringListMapper.mts} +0 -0
  92. /package/src/utils/{WordsToObjectMapper.ts → WordsToObjectMapper.mts} +0 -0
  93. /package/src/utils/{binarySearch.ts → binarySearch.mts} +0 -0
  94. /package/src/utils/{findAny.ts → findAny.mts} +0 -0
  95. /package/src/utils/{normalizeWordOrSeparator.ts → normalizeWordOrSeparator.mts} +0 -0
  96. /package/src/utils/{tokenizeIme.ts → tokenizeIme.mts} +0 -0
@@ -1,5 +1,8 @@
1
- import { poisciFirme } from "./poisciFirme.js";
2
- import { urediImePriimek } from "./urediImePriimek.js";
1
+ import { poisciFirme } from "./poisciFirme.mjs";
2
+ import { urediImePriimek } from "./urediImePriimek.mjs";
3
+ import { findAny } from "./utils/findAny.mjs";
4
+ import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
5
+ import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
3
6
  /**
4
7
  * Parse an input string and attempt to extract either a person or a firm.
5
8
  *
@@ -22,8 +25,10 @@ import { urediImePriimek } from "./urediImePriimek.js";
22
25
  export function izlusci(vhodnoIme, opcije) {
23
26
  let vrniFirme = !opcije?.vrni || opcije.vrni === "firme" || opcije.vrni === "oboje";
24
27
  let vrniImena = !opcije?.vrni || opcije.vrni === "imena" || opcije.vrni === "oboje";
28
+ const normalized = normalizeStringForSearch(vhodnoIme);
29
+ const legalDesignation = findAny(LegalFormSuffixesNormalized, normalized);
25
30
  let najdeneFirme = vrniFirme && poisciFirme(vhodnoIme, { limit: opcije?.limit }) || undefined;
26
- let urejenoIme = vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
31
+ let urejenoIme = !legalDesignation && vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
27
32
  if (urejenoIme && typeof urejenoIme === "object") {
28
33
  if (!urejenoIme.ime || !urejenoIme.priimek)
29
34
  urejenoIme = undefined;
@@ -48,3 +53,4 @@ export function izlusci(vhodnoIme, opcije) {
48
53
  return arr;
49
54
  return vhodnoIme;
50
55
  }
56
+ console.log(``, JSON.stringify(izlusci("Primož krajnik sp"), null, 4));
@@ -1,4 +1,4 @@
1
- import { PravnaOseba } from "./types/PravnaOseba.js";
1
+ import { PravnaOseba } from "./types/PravnaOseba.mjs";
2
2
  export interface FirmaResult {
3
3
  firma: string;
4
4
  pravnaOseba?: PravnaOseba & {
@@ -1,11 +1,11 @@
1
1
  import { clone } from "cry-helpers";
2
- import { firmeDb } from "./data/firmeDb.js";
3
- import { findAny } from "./utils/findAny.js";
4
- import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.js";
5
- import { normalizeListOfNames } from "./utils/normalizeListOfNames.js";
6
- import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.js";
7
- import { DOLZINA_MATICNE } from "./0-file-locations.js";
8
- const TIMING = true;
2
+ import { firmeDb } from "./data/firmeDb.mjs";
3
+ import { findAny } from "./utils/findAny.mjs";
4
+ import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
5
+ import { normalizeListOfNames } from "./utils/normalizeListOfNames.mjs";
6
+ import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
7
+ import { DOLZINA_MATICNE } from "./0-file-locations.mjs";
8
+ const TIMING = false;
9
9
  console.warn("WARNING: Large amount of RAM allocated for poisciFirme.");
10
10
  function onlyDigitsFast(s) {
11
11
  if (s.length === 0)
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ export {};
@@ -0,0 +1,188 @@
1
+ #!/usr/bin/env bun
2
+ import { createInterface } from 'readline';
3
+ import { izlusci } from '../izlusci.mjs';
4
+ const LIMIT = 10;
5
+ function printUsage() {
6
+ console.log(`
7
+ Uporaba: izlusciRuntime.mts [opcije] [iskalni_niz]
8
+
9
+ Opcije:
10
+ -f vraca samo firme
11
+ -i vraca samo imena
12
+ -o vraca oboje (privzeto)
13
+ -1 vrne samo en rezultat
14
+ -n vrne vec rezultatov
15
+ -d dodaj podatke firme
16
+ -b beautify ime (privzeto: true)
17
+ -h prikazi pomoc
18
+
19
+ Primeri:
20
+ izlusciRuntime.mts "Janez Novak"
21
+ izlusciRuntime.mts -i "Janez Novak"
22
+ izlusciRuntime.mts -f -n "Novak"
23
+ `);
24
+ }
25
+ function printInteractiveHelp() {
26
+ console.log(`
27
+ Interaktivni nacin - ukazi za spremembo opcij:
28
+ f - vraca samo firme
29
+ i - vraca samo imena
30
+ o - vraca oboje (privzeto)
31
+ 1 - vrne samo en rezultat
32
+ n - vrne vec rezultatov
33
+ d - dodaj/odstrani podatke firme
34
+ b - beautify ime
35
+ q - izhod
36
+ ? - pomoc
37
+
38
+ Vnesite ime ali firmo za iskanje.
39
+ `);
40
+ }
41
+ function printCurrentOptions(opts) {
42
+ const vrni = opts.vrni || 'oboje';
43
+ const vecRezultatov = (opts.limit || 1) > 1 ? 'da' : 'ne';
44
+ const beautify = opts.beautify !== false ? 'da' : 'ne';
45
+ console.log(`[Trenutne opcije: vrni=${vrni}, vec rezultatov=${vecRezultatov}, beautify=${beautify}]`);
46
+ console.log(``);
47
+ }
48
+ function parseArgs(args) {
49
+ const opts = {
50
+ vrni: 'oboje',
51
+ limit: LIMIT,
52
+ beautify: true
53
+ };
54
+ let query = null;
55
+ let showHelp = false;
56
+ for (let i = 0; i < args.length; i++) {
57
+ const arg = args[i];
58
+ if (arg === '-f') {
59
+ opts.vrni = 'firme';
60
+ }
61
+ else if (arg === '-i') {
62
+ opts.vrni = 'imena';
63
+ }
64
+ else if (arg === '-o') {
65
+ opts.vrni = 'oboje';
66
+ }
67
+ else if (arg === '-1') {
68
+ opts.limit = 1;
69
+ }
70
+ else if (arg === '-n') {
71
+ opts.limit = LIMIT;
72
+ }
73
+ else if (arg === '-d') {
74
+ opts.beautify = false;
75
+ }
76
+ else if (arg === '-h' || arg === '--help') {
77
+ showHelp = true;
78
+ }
79
+ else if (!arg.startsWith('-')) {
80
+ query = arg;
81
+ }
82
+ }
83
+ return { opts, query, showHelp };
84
+ }
85
+ async function main() {
86
+ const args = process.argv.slice(2);
87
+ const { opts, query, showHelp } = parseArgs(args);
88
+ if (showHelp) {
89
+ printUsage();
90
+ return;
91
+ }
92
+ // Non-interactive mode if query provided
93
+ if (query && query.trim().length > 0) {
94
+ const result = izlusci(query, opts);
95
+ if (typeof result === 'string') {
96
+ console.log(result);
97
+ }
98
+ else {
99
+ console.log(JSON.stringify(result, null, 2));
100
+ }
101
+ return;
102
+ }
103
+ // Interactive mode
104
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
105
+ printInteractiveHelp();
106
+ printCurrentOptions(opts);
107
+ const prompt = () => {
108
+ rl.question('> ', (input) => {
109
+ const trimmed = input.trim();
110
+ if (trimmed === 'q' || trimmed === 'quit' || trimmed === 'exit') {
111
+ rl.close();
112
+ return;
113
+ }
114
+ // Check for option commands
115
+ if (trimmed === 'f') {
116
+ opts.vrni = 'firme';
117
+ console.log('Nastavljeno: vraca samo firme');
118
+ printCurrentOptions(opts);
119
+ prompt();
120
+ return;
121
+ }
122
+ if (trimmed === 'i') {
123
+ opts.vrni = 'imena';
124
+ console.log('Nastavljeno: vraca samo imena');
125
+ printCurrentOptions(opts);
126
+ prompt();
127
+ return;
128
+ }
129
+ if (trimmed === 'o') {
130
+ opts.vrni = 'oboje';
131
+ console.log('Nastavljeno: vraca oboje');
132
+ printCurrentOptions(opts);
133
+ prompt();
134
+ return;
135
+ }
136
+ if (trimmed === '1') {
137
+ opts.limit = 1;
138
+ console.log('Nastavljeno: vrne samo en rezultat');
139
+ printCurrentOptions(opts);
140
+ prompt();
141
+ return;
142
+ }
143
+ if (trimmed === 'n') {
144
+ opts.limit = LIMIT;
145
+ console.log('Nastavljeno: vrne vec rezultatov');
146
+ printCurrentOptions(opts);
147
+ prompt();
148
+ return;
149
+ }
150
+ if (trimmed === 'd') {
151
+ printCurrentOptions(opts);
152
+ prompt();
153
+ return;
154
+ }
155
+ if (trimmed === 'b') {
156
+ opts.beautify = !opts.beautify;
157
+ console.log(`Nastavljeno: beautify ${opts.beautify ? 'vklopljen' : 'izklopljen'}`);
158
+ printCurrentOptions(opts);
159
+ prompt();
160
+ return;
161
+ }
162
+ if (trimmed === '?' || trimmed === 'help') {
163
+ printInteractiveHelp();
164
+ printCurrentOptions(opts);
165
+ prompt();
166
+ return;
167
+ }
168
+ if (trimmed.length === 0) {
169
+ prompt();
170
+ return;
171
+ }
172
+ // Search
173
+ const result = izlusci(trimmed, opts);
174
+ if (typeof result === 'string') {
175
+ console.log(result);
176
+ }
177
+ else {
178
+ console.log(JSON.stringify(result, null, 2));
179
+ }
180
+ prompt();
181
+ });
182
+ };
183
+ prompt();
184
+ }
185
+ main().catch(err => {
186
+ console.error('Napaka:', err);
187
+ process.exit(1);
188
+ });
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bun
2
+ export {};
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env bun
2
+ import { createInterface } from 'readline';
3
+ import { urediImePriimek } from '../urediImePriimek.mjs';
4
+ async function ask(prompt) {
5
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
6
+ return await new Promise(resolve => {
7
+ rl.question(prompt, answer => {
8
+ rl.close();
9
+ resolve(answer);
10
+ });
11
+ });
12
+ }
13
+ async function main() {
14
+ const arg = process.argv[2];
15
+ const input = arg && String(arg).trim().length > 0 ? String(arg) : await ask('Vnesite ime (ime in/ali priimek): ');
16
+ const result = urediImePriimek(input);
17
+ if (typeof result === 'string') {
18
+ console.log(result);
19
+ return;
20
+ }
21
+ // pretty-print object result
22
+ console.log(JSON.stringify(result, null, 2));
23
+ }
24
+ main().catch(err => {
25
+ console.error('Napaka:', err);
26
+ process.exit(1);
27
+ });
@@ -1,5 +1,5 @@
1
1
  import { expect } from 'chai';
2
- import { urediImePriimek } from '../urediImePriimek.js';
2
+ import { urediImePriimek } from '../urediImePriimek.mjs';
3
3
  describe('urediImePriimek', () => {
4
4
  it('should parse "Jurij Tomaž"', () => {
5
5
  const result = urediImePriimek('Jurij Tomaž');
@@ -1,4 +1,4 @@
1
- import { PravnaOseba } from "./PravnaOseba.js";
1
+ import { PravnaOseba } from "./PravnaOseba.mjs";
2
2
  export interface PravnaOsebaNormalised extends Omit<PravnaOseba, "firma" | "oblika" | "ulica" | "posta"> {
3
3
  _firma: number;
4
4
  _oblika: number;
@@ -1,7 +1,7 @@
1
- import { binarySearch } from './utils/binarySearch.js';
2
- import { normalizeWordOrSeparator } from './utils/normalizeWordOrSeparator.js';
3
- import { getSortedFemaleNames, getSortedMaleNames, getSortedSurnames } from './utils/normalizirano.js';
4
- import { tokenizeIme } from './utils/tokenizeIme.js';
1
+ import { binarySearch } from './utils/binarySearch.mjs';
2
+ import { normalizeWordOrSeparator } from './utils/normalizeWordOrSeparator.mjs';
3
+ import { getSortedFemaleNames, getSortedMaleNames, getSortedSurnames } from './utils/normalizirano.mjs';
4
+ import { tokenizeIme } from './utils/tokenizeIme.mjs';
5
5
  function getPatternCharForWord(word) {
6
6
  const isMaleName = binarySearch(getSortedMaleNames(), word) && 4 || 0;
7
7
  const isFemaleName = binarySearch(getSortedFemaleNames(), word) && 2 || 0;
@@ -1,3 +1,3 @@
1
- import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.js";
1
+ import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.mjs";
2
2
  export const LegalFormSuffixes = ['d.o.o.', 'd.d.', 's.p.', 'z.o.o.', 'k.d.'];
3
3
  export const LegalFormSuffixesNormalized = LegalFormSuffixes.map(l => normalizeWordOrSeparator(l, false));
@@ -1,4 +1,4 @@
1
- import { SortedStringListMapper } from "./SortedStringListMapper.js";
1
+ import { SortedStringListMapper } from "./SortedStringListMapper.mjs";
2
2
  /**
3
3
  * Creates string mappers for a list of objects.
4
4
  * Use in three phases:
@@ -1,4 +1,4 @@
1
- import { normalizeWordOrSeparator } from './normalizeWordOrSeparator.js';
1
+ import { normalizeWordOrSeparator } from './normalizeWordOrSeparator.mjs';
2
2
  /**
3
3
  * Return sorted deduplicated list of normalized words
4
4
  * Split names like Ana Marija or Ana-Marija into two names ['ana','marija']
@@ -1,4 +1,4 @@
1
- import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.js";
1
+ import { normalizeWordOrSeparator } from "./normalizeWordOrSeparator.mjs";
2
2
  /**
3
3
  * Return sorted deduplicated list of [normalised_name, original_names_sorted[]]
4
4
  *
@@ -1,5 +1,5 @@
1
- import { normalizeListOfNames } from "./normalizeListOfNames.js";
2
- import { LegalFormSuffixesNormalized } from "./LegalFormSuffixes.js";
1
+ import { normalizeListOfNames } from "./normalizeListOfNames.mjs";
2
+ import { LegalFormSuffixesNormalized } from "./LegalFormSuffixes.mjs";
3
3
  const MIN_WORD_NAME_FOR_SEARCH = 4;
4
4
  export function normalizeStringForSearch(list, sort = false) {
5
5
  let res = normalizeListOfNames(list.split(" "), true).filter((a) => LegalFormSuffixesNormalized.includes(a)
@@ -2,10 +2,10 @@
2
2
  * Normalization utilities for searching names and firms.
3
3
  * Uses lazy initialization and binary search for performance.
4
4
  */
5
- import { imenaM } from '../data/imenaM.js';
6
- import { imenaZ } from '../data/imenaZ.js';
7
- import { priimki } from '../data/priimki.js';
8
- import { normalizeListOfNames } from './normalizeListOfNames.js';
5
+ import { imenaM } from '../data/imenaM.mjs';
6
+ import { imenaZ } from '../data/imenaZ.mjs';
7
+ import { priimki } from '../data/priimki.mjs';
8
+ import { normalizeListOfNames } from './normalizeListOfNames.mjs';
9
9
  // ============================================================================
10
10
  // Lazy-initialized pre-normalized sorted arrays for binary search
11
11
  // ============================================================================
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cry-sloimena",
3
- "version": "1.0.6",
3
+ "version": "1.0.8",
4
4
  "description": "Slovenska imena in priimki",
5
5
  "type": "module",
6
6
  "main": "dist/index.mjs",
@@ -0,0 +1,3 @@
1
+ export const OUT_NORM_FIRME_DB_JSON = './data/firmeDb.json'
2
+ export const IN_OPSI_PRS_CSV = './vhodni-podatki/opsiprs.csv';
3
+ export const DOLZINA_MATICNE = 10;
@@ -1,5 +1,5 @@
1
1
  import firmeDbJson from "../../data/firmeDb.json" with { type: "json" };
2
- import { PravnaOsebaInternal } from "../types/PravnaOseba.js";
2
+ import { PravnaOsebaInternal } from "../types/PravnaOseba.mjs";
3
3
 
4
4
  export interface FirmeDbSortedArrays {
5
5
  readonly firma: readonly string[];
@@ -0,0 +1,5 @@
1
+ import { firmeDb } from "./firmeDb.mjs";
2
+
3
+ console.warn("WARNING: Large amount of RAM allocated for poisciFirme.");
4
+
5
+ export default firmeDb.sortedArrays.firma;
package/src/index.mts ADDED
@@ -0,0 +1,7 @@
1
+ export { imenaM } from './data/imenaM.mjs';
2
+ export { imenaZ } from './data/imenaZ.mjs';
3
+ export { priimki } from './data/priimki.mjs';
4
+ export { izlusci, type IzlusciResult, type IzlusciOptions, type OsebaResult } from './izlusci.mjs';
5
+ export { urediImePriimek } from './urediImePriimek.mjs';
6
+ export { poisciFirme, type FirmaResult, type PoisciFirmoOptions } from './poisciFirme.mjs';
7
+ export { davcnaZaMaticno } from './davcnaZaMaticno.mjs';
@@ -1,13 +1,13 @@
1
1
  import * as fs from 'fs';
2
2
  import * as readline from 'readline';
3
- import { ObjectSortedListsMapper } from '../utils/ObjectSortedListsMapper.js';
4
- import { PravnaOsebaInternal } from '../types/PravnaOseba.js';
5
- import { IN_OPSI_PRS_CSV, OUT_NORM_FIRME_DB_MTS } from '../0-file-locations.js';
6
- import { normalizeStringForSearch } from '../utils/normalizeStringForSearch.js';
7
- import { findAny } from '../utils/findAny.js';
8
- import { LegalFormSuffixesNormalized } from '../utils/LegalFormSuffixes.js';
3
+ import { IN_OPSI_PRS_CSV, OUT_NORM_FIRME_DB_JSON } from '../0-file-locations.mjs';
4
+ import { PravnaOsebaInternal } from '../types/PravnaOseba.mjs';
5
+ import { findAny } from '../utils/findAny.mjs';
6
+ import { LegalFormSuffixesNormalized } from '../utils/LegalFormSuffixes.mjs';
7
+ import { normalizeStringForSearch } from '../utils/normalizeStringForSearch.mjs';
8
+ import { ObjectSortedListsMapper } from '../utils/ObjectSortedListsMapper.mjs';
9
9
 
10
- const MAX_LIMIT = 0;
10
+ const MAX_LIMIT = undefined; // 0 just writes the structure, use undefined to export everything.
11
11
 
12
12
  async function parseCSV() {
13
13
 
@@ -67,12 +67,15 @@ async function parseCSV() {
67
67
  legalDesignation,
68
68
  };
69
69
 
70
- objStringMapper.add(oseba);
71
- pravneOsebe.push(oseba);
70
+
71
+ if (MAX_LIMIT !== 0) {
72
+ objStringMapper.add(oseba);
73
+ pravneOsebe.push(oseba);
74
+ }
72
75
  }
73
76
 
74
77
  //Limit to prevent memory issues - remove this if you want all records
75
- if (MAX_LIMIT && pravneOsebe.length >= MAX_LIMIT) {
78
+ if (MAX_LIMIT!==undefined && pravneOsebe.length >= MAX_LIMIT) {
76
79
  console.log(`Reached ${MAX_LIMIT} records limit`);
77
80
  break;
78
81
  }
@@ -96,13 +99,14 @@ async function parseCSV() {
96
99
  firme: pravneOsebe
97
100
  };
98
101
 
99
- if (OUT_NORM_FIRME_DB_MTS.includes("json"))
100
- fs.writeFileSync(OUT_NORM_FIRME_DB_MTS, JSON.stringify(jsonData));
101
- else
102
- fs.writeFileSync(OUT_NORM_FIRME_DB_MTS, "export const firmeDb = " + JSON.stringify(jsonData));
102
+ const json = (MAX_LIMIT!==undefined && MAX_LIMIT<20)
103
+ ? JSON.stringify(jsonData, null, 4)
104
+ : JSON.stringify(jsonData);
105
+
106
+ fs.writeFileSync(OUT_NORM_FIRME_DB_JSON, json);
103
107
 
104
- const stats = fs.statSync(OUT_NORM_FIRME_DB_MTS);
105
- console.log(`Written to ${OUT_NORM_FIRME_DB_MTS} (${(stats.size / 1024 / 1024).toFixed(1)} MB)`);
108
+ const stats = fs.statSync(OUT_NORM_FIRME_DB_JSON);
109
+ console.log(`Written to ${OUT_NORM_FIRME_DB_JSON} (${(stats.size / 1024 / 1024).toFixed(1)} MB)`);
106
110
  }
107
111
 
108
112
  parseCSV().catch(console.error);
@@ -1,9 +1,8 @@
1
- import { splitAndClean } from "cry-helpers";
2
- import { FirmaResult, poisciFirme } from "./poisciFirme.js";
3
- import { urediImePriimek } from "./urediImePriimek.js";
4
- import { findAny } from "./utils/findAny.js";
5
- import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.js";
6
- import { normalizeListOfNames } from "./utils/normalizeListOfNames.js";
1
+ import { FirmaResult, poisciFirme } from "./poisciFirme.mjs";
2
+ import { urediImePriimek } from "./urediImePriimek.mjs";
3
+ import { findAny } from "./utils/findAny.mjs";
4
+ import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
5
+ import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
7
6
 
8
7
  /**
9
8
  * Options controlling how `izlusci` searches and returns firm data.
@@ -65,8 +64,11 @@ export function izlusci(vhodnoIme: string, opcije?: IzlusciOptions): IzlusciResu
65
64
  let vrniFirme = !opcije?.vrni || opcije.vrni === "firme" || opcije.vrni === "oboje";
66
65
  let vrniImena = !opcije?.vrni || opcije.vrni === "imena" || opcije.vrni === "oboje";
67
66
 
67
+ const normalized = normalizeStringForSearch(vhodnoIme);
68
+ const legalDesignation = findAny(LegalFormSuffixesNormalized, normalized);
69
+
68
70
  let najdeneFirme = vrniFirme && poisciFirme(vhodnoIme, { limit: opcije?.limit }) || undefined;
69
- let urejenoIme = vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
71
+ let urejenoIme = !legalDesignation && vrniImena && urediImePriimek(vhodnoIme, opcije?.beautify) || undefined;
70
72
 
71
73
  if (urejenoIme && typeof urejenoIme === "object") {
72
74
  if (!urejenoIme.ime || !urejenoIme.priimek) urejenoIme = undefined;
@@ -91,3 +93,7 @@ export function izlusci(vhodnoIme: string, opcije?: IzlusciOptions): IzlusciResu
91
93
  return vhodnoIme;
92
94
 
93
95
  }
96
+
97
+ console.log(``, JSON.stringify(
98
+ izlusci("Primož krajnik sp")
99
+ , null, 4));
@@ -1,13 +1,13 @@
1
1
  import { clone } from "cry-helpers";
2
- import { firmeDb } from "./data/firmeDb.js";
3
- import { PravnaOseba, PravnaOsebaInternal } from "./types/PravnaOseba.js";
4
- import { findAny } from "./utils/findAny.js";
5
- import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.js";
6
- import { normalizeListOfNames } from "./utils/normalizeListOfNames.js";
7
- import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.js";
8
- import { DOLZINA_MATICNE } from "./0-file-locations.js";
9
-
10
- const TIMING = true;
2
+ import { firmeDb } from "./data/firmeDb.mjs";
3
+ import { PravnaOseba, PravnaOsebaInternal } from "./types/PravnaOseba.mjs";
4
+ import { findAny } from "./utils/findAny.mjs";
5
+ import { LegalFormSuffixesNormalized } from "./utils/LegalFormSuffixes.mjs";
6
+ import { normalizeListOfNames } from "./utils/normalizeListOfNames.mjs";
7
+ import { normalizeStringForSearch } from "./utils/normalizeStringForSearch.mjs";
8
+ import { DOLZINA_MATICNE } from "./0-file-locations.mjs";
9
+
10
+ const TIMING = false;
11
11
  export interface FirmaResult {
12
12
  firma: string;
13
13
  pravnaOseba?: PravnaOseba & { oblikaString?: string };