japanese_address_parser 3.0.5 → 3.1.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 (54) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +22 -2
  3. data/Gemfile.lock +6 -6
  4. data/js/node_modules/.package-lock.json +86 -1
  5. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/lib/cacheRegexes.d.ts +9 -2
  6. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/main-browser.js +141 -25
  7. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/main-es.d.ts +3 -0
  8. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/main-es.js +1922 -0
  9. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/main-node.d.ts +6 -0
  10. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/main-node.js +203 -54
  11. data/js/node_modules/@geolonia/normalize-japanese-addresses/dist/normalize.d.ts +47 -3
  12. data/js/node_modules/@geolonia/normalize-japanese-addresses/package.json +9 -5
  13. data/js/node_modules/@geolonia/normalize-japanese-addresses/rollup.config.ts +9 -0
  14. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/config.ts +1 -0
  15. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/lib/cacheRegexes.ts +71 -11
  16. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/lib/dict.ts +3 -2
  17. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/lib/kan2num.ts +6 -2
  18. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/main-es.ts +4 -0
  19. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/main-node.ts +41 -12
  20. data/js/node_modules/@geolonia/normalize-japanese-addresses/src/normalize.ts +165 -37
  21. data/js/package-lock.json +7 -7
  22. data/js/package.json +1 -1
  23. data/lib/japanese_address_parser/data/03-03206.csv +1 -0
  24. data/lib/japanese_address_parser/data/04-04421.csv +8 -8
  25. data/lib/japanese_address_parser/data/05-05203.csv +5 -0
  26. data/lib/japanese_address_parser/data/08-08222.csv +4 -0
  27. data/lib/japanese_address_parser/data/11-11442.csv +2 -0
  28. data/lib/japanese_address_parser/data/13-13225.csv +3 -0
  29. data/lib/japanese_address_parser/data/14-14134.csv +3 -0
  30. data/lib/japanese_address_parser/data/15-15104.csv +1 -1
  31. data/lib/japanese_address_parser/data/15-15222.csv +1 -1
  32. data/lib/japanese_address_parser/data/15-15225.csv +1 -1
  33. data/lib/japanese_address_parser/data/18-18202.csv +1 -1
  34. data/lib/japanese_address_parser/data/22-22102.csv +6 -0
  35. data/lib/japanese_address_parser/data/23-23202.csv +1 -0
  36. data/lib/japanese_address_parser/data/23-23207.csv +5 -0
  37. data/lib/japanese_address_parser/data/23-23213.csv +1 -0
  38. data/lib/japanese_address_parser/data/23-23236.csv +1 -0
  39. data/lib/japanese_address_parser/data/25-25206.csv +4 -0
  40. data/lib/japanese_address_parser/data/27-27212.csv +4 -0
  41. data/lib/japanese_address_parser/data/28-28108.csv +1 -0
  42. data/lib/japanese_address_parser/data/28-28204.csv +1 -1
  43. data/lib/japanese_address_parser/data/28-28226.csv +1 -0
  44. data/lib/japanese_address_parser/data/29-29201.csv +1 -1
  45. data/lib/japanese_address_parser/data/34-34207.csv +3 -0
  46. data/lib/japanese_address_parser/data/35-35215.csv +3 -0
  47. data/lib/japanese_address_parser/data/38-38204.csv +17 -0
  48. data/lib/japanese_address_parser/data/40-40131.csv +1 -0
  49. data/lib/japanese_address_parser/data/40-40342.csv +4 -0
  50. data/lib/japanese_address_parser/data/44-44201.csv +27 -0
  51. data/lib/japanese_address_parser/data/46-46201.csv +4 -0
  52. data/lib/japanese_address_parser/data/47-47205.csv +4 -0
  53. data/lib/japanese_address_parser/version.rb +1 -1
  54. metadata +6 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d28fd38a1eb9e6e7c3a6a8898bc94d22362d37682c484054f2590008a2323c1f
4
- data.tar.gz: 8eee70a4afd90a33efba50d1e58a5598df1fe6f08dcb172cab0091aedf2df0c3
3
+ metadata.gz: 53a31a273123299a2e48aea1fa82e3bd4d0d33d7e8f1a694ef39a1926004576a
4
+ data.tar.gz: 21198c935bf0dc0892f5ff395403ef4aaa08d03f60d576e7cfbeaa556ae9ebed
5
5
  SHA512:
6
- metadata.gz: a8619ac4af9c11b814e4dd745445f783a6aadbda4bf0ab1c455015dcee0ce2091099a2a8c7ac6dcc645058bc20cfc25cf5f4bf680a4e713c9e4a566420485f84
7
- data.tar.gz: 646b35be9a561c4ba8e4429e4d83ab06dfe461e5752a2ff9851dd5fea78cca2df511c484b6c758ca18b1be0b6c3419c66b73a7cb19341eba13db4768eb0d1bab
6
+ metadata.gz: 742a64618c177ef65bf6dcb0677993ba531f734efda24b81dc2a5f0839aef47ae42c57e829b5c9a3e9b984dbb4b1960303a1b05c8d88dcfc516b473948f8219e
7
+ data.tar.gz: dab2e5dedbeda742af992a5b9574697523f9816c9765741c8f6b9eec6b06723c98247f9248d20a61aeebdcaf541d09d734c2a30a12ca22a47b5b2f1ab2da5694
data/CHANGELOG.md CHANGED
@@ -9,8 +9,6 @@ Change Log の形式は [Keep a Changelog](http://keepachangelog.com/) に従い
9
9
 
10
10
  ### Changed
11
11
 
12
- - [#79](https://github.com/yamat47/japanese_address_parser/pull/79) Bump activesupport from 7.0.4 to 7.0.4.1([@yamat47](https://github.com/yamat47))
13
-
14
12
  ### Deprecated
15
13
 
16
14
  ### Removed
@@ -19,6 +17,28 @@ Change Log の形式は [Keep a Changelog](http://keepachangelog.com/) に従い
19
17
 
20
18
  ### Security
21
19
 
20
+ ## [3.1.1] - 2023-09-07
21
+
22
+ ### Changed
23
+
24
+ - [#95](https://github.com/yamat47/japanese_address_parser/pull/95) Bump @geolonia/normalize-japanese-addresses from 2.8.0 to 2.9.2 in /js([@yamat47](https://github.com/yamat47))
25
+
26
+ ### Security
27
+
28
+ - [#94](https://github.com/yamat47/japanese_address_parser/pull/94) Bump activesupport from 7.0.4.3 to 7.0.7.1([@yamat47](https://github.com/yamat47))
29
+
30
+ ## [3.1.0] - 2023-07-24
31
+
32
+ ### Changed
33
+
34
+ - [#79](https://github.com/yamat47/japanese_address_parser/pull/79) Bump activesupport from 7.0.4 to 7.0.4.1([@yamat47](https://github.com/yamat47))
35
+ - [#84](https://github.com/yamat47/japanese_address_parser/pull/84) Bump activesupport from 7.0.4.1 to 7.0.4.3([@yamat47](https://github.com/yamat47))
36
+ - [#85](https://github.com/yamat47/japanese_address_parser/pull/85) CIに必要な権限を追加した。([@yamat47](https://github.com/yamat47))
37
+
38
+ ### Removed
39
+
40
+ - [#89](https://github.com/yamat47/japanese_address_parser/pull/89) 最新のRubyでCIを実行するのを一時的に停止した。([@yamat47](https://github.com/yamat47))
41
+
22
42
  ## [3.0.5]
23
43
  ### Changed
24
44
 
data/Gemfile.lock CHANGED
@@ -1,31 +1,31 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- japanese_address_parser (3.0.5)
4
+ japanese_address_parser (3.1.1)
5
5
  schmooze
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activesupport (7.0.4.1)
10
+ activesupport (7.0.7.1)
11
11
  concurrent-ruby (~> 1.0, >= 1.0.2)
12
12
  i18n (>= 1.6, < 2)
13
13
  minitest (>= 5.1)
14
14
  tzinfo (~> 2.0)
15
15
  ast (2.4.2)
16
- concurrent-ruby (1.1.10)
16
+ concurrent-ruby (1.2.2)
17
17
  diff-lcs (1.5.0)
18
18
  factory_bot (6.2.1)
19
19
  activesupport (>= 5.0.0)
20
20
  ffi (1.15.5)
21
- i18n (1.12.0)
21
+ i18n (1.14.1)
22
22
  concurrent-ruby (~> 1.0)
23
23
  json (2.6.2)
24
24
  language_server-protocol (3.17.0.1)
25
25
  listen (3.7.1)
26
26
  rb-fsevent (~> 0.10, >= 0.10.3)
27
27
  rb-inotify (~> 0.9, >= 0.9.10)
28
- minitest (5.17.0)
28
+ minitest (5.19.0)
29
29
  parallel (1.22.1)
30
30
  parser (3.1.2.1)
31
31
  ast (~> 2.4.1)
@@ -81,7 +81,7 @@ GEM
81
81
  unicode-display_width (>= 1.1.1, < 3)
82
82
  typeprof (0.21.3)
83
83
  rbs (>= 1.8.1)
84
- tzinfo (2.0.5)
84
+ tzinfo (2.0.6)
85
85
  concurrent-ruby (~> 1.0)
86
86
  unicode-display_width (2.3.0)
87
87
 
@@ -1,5 +1,90 @@
1
1
  {
2
+ "name": "japanese_address_parser",
2
3
  "lockfileVersion": 3,
3
4
  "requires": true,
4
- "packages": {}
5
+ "packages": {
6
+ "node_modules/@geolonia/japanese-numeral": {
7
+ "version": "0.1.16",
8
+ "resolved": "https://registry.npmjs.org/@geolonia/japanese-numeral/-/japanese-numeral-0.1.16.tgz",
9
+ "integrity": "sha512-xzSsIHhyyjqNpW8qSh5bFMu3FJvyJGBbNZ/t8clPHkigjUdZ7Ck8wkzCkcwlVd00RkoHwGDLnvXx5W0WiGK0TQ=="
10
+ },
11
+ "node_modules/@geolonia/normalize-japanese-addresses": {
12
+ "version": "2.9.2",
13
+ "resolved": "https://registry.npmjs.org/@geolonia/normalize-japanese-addresses/-/normalize-japanese-addresses-2.9.2.tgz",
14
+ "integrity": "sha512-sbeV/seJ/ue6pn2sLo+Ccunl6eB3yNhrUIzNpT2IiR9Fw6fW5f1lLdApODqhTmz++xr1dyPwZOzTXCGEaXejDA==",
15
+ "dependencies": {
16
+ "@geolonia/japanese-numeral": "^0.1.16",
17
+ "isomorphic-unfetch": "^3.1.0",
18
+ "lru-cache": "^6.0.0"
19
+ }
20
+ },
21
+ "node_modules/isomorphic-unfetch": {
22
+ "version": "3.1.0",
23
+ "resolved": "https://registry.npmjs.org/isomorphic-unfetch/-/isomorphic-unfetch-3.1.0.tgz",
24
+ "integrity": "sha512-geDJjpoZ8N0kWexiwkX8F9NkTsXhetLPVbZFQ+JTW239QNOwvB0gniuR1Wc6f0AMTn7/mFGyXvHTifrCp/GH8Q==",
25
+ "dependencies": {
26
+ "node-fetch": "^2.6.1",
27
+ "unfetch": "^4.2.0"
28
+ }
29
+ },
30
+ "node_modules/lru-cache": {
31
+ "version": "6.0.0",
32
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
33
+ "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
34
+ "dependencies": {
35
+ "yallist": "^4.0.0"
36
+ },
37
+ "engines": {
38
+ "node": ">=10"
39
+ }
40
+ },
41
+ "node_modules/node-fetch": {
42
+ "version": "2.6.7",
43
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
44
+ "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
45
+ "dependencies": {
46
+ "whatwg-url": "^5.0.0"
47
+ },
48
+ "engines": {
49
+ "node": "4.x || >=6.0.0"
50
+ },
51
+ "peerDependencies": {
52
+ "encoding": "^0.1.0"
53
+ },
54
+ "peerDependenciesMeta": {
55
+ "encoding": {
56
+ "optional": true
57
+ }
58
+ }
59
+ },
60
+ "node_modules/tr46": {
61
+ "version": "0.0.3",
62
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
63
+ "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o="
64
+ },
65
+ "node_modules/unfetch": {
66
+ "version": "4.2.0",
67
+ "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz",
68
+ "integrity": "sha512-F9p7yYCn6cIW9El1zi0HI6vqpeIvBsr3dSuRO6Xuppb1u5rXpCPmMvLSyECLhybr9isec8Ohl0hPekMVrEinDA=="
69
+ },
70
+ "node_modules/webidl-conversions": {
71
+ "version": "3.0.1",
72
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
73
+ "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE="
74
+ },
75
+ "node_modules/whatwg-url": {
76
+ "version": "5.0.0",
77
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
78
+ "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
79
+ "dependencies": {
80
+ "tr46": "~0.0.3",
81
+ "webidl-conversions": "^3.0.0"
82
+ }
83
+ },
84
+ "node_modules/yallist": {
85
+ "version": "4.0.0",
86
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
87
+ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
88
+ }
89
+ }
5
90
  }
@@ -1,4 +1,4 @@
1
- declare type PrefectureList = {
1
+ export declare type PrefectureList = {
2
2
  [key: string]: string[];
3
3
  };
4
4
  interface SingleTown {
@@ -8,7 +8,13 @@ interface SingleTown {
8
8
  lat: string;
9
9
  lng: string;
10
10
  }
11
- declare type TownList = SingleTown[];
11
+ export declare type TownList = SingleTown[];
12
+ interface SingleAddr {
13
+ addr: string;
14
+ lat: string | null;
15
+ lng: string | null;
16
+ }
17
+ export declare type AddrList = SingleAddr[];
12
18
  interface GaikuListItem {
13
19
  gaiku: string;
14
20
  lat: string;
@@ -28,6 +34,7 @@ export declare const getCityRegexPatterns: (pref: string, cities: string[]) => [
28
34
  export declare const getTowns: (pref: string, city: string) => Promise<TownList>;
29
35
  export declare const getGaikuList: (pref: string, city: string, town: string) => Promise<GaikuListItem[]>;
30
36
  export declare const getResidentials: (pref: string, city: string, town: string) => Promise<ResidentialList>;
37
+ export declare const getAddrs: (pref: string, city: string, town: string) => Promise<AddrList>;
31
38
  export declare const getTownRegexPatterns: (pref: string, city: string) => Promise<[SingleTown, string][]>;
32
39
  export declare const getSameNamedPrefectureCityRegexPatterns: (prefs: string[], prefList: PrefectureList) => [string, string][];
33
40
  export {};
@@ -348,6 +348,7 @@
348
348
 
349
349
  var gh_pages_endpoint = 'https://geolonia.github.io/japanese-addresses/api/ja';
350
350
  var currentConfig = {
351
+ interfaceVersion: 1,
351
352
  japaneseAddressesApi: gh_pages_endpoint,
352
353
  townCacheSize: 1000,
353
354
  };
@@ -355,8 +356,13 @@
355
356
  var kan2num = function (string) {
356
357
  var kanjiNumbers = dist.findKanjiNumbers(string);
357
358
  for (var i = 0; i < kanjiNumbers.length; i++) {
358
- // @ts-ignore
359
- string = string.replace(kanjiNumbers[i], dist.kanji2number(kanjiNumbers[i]));
359
+ try {
360
+ // @ts-ignore
361
+ string = string.replace(kanjiNumbers[i], dist.kanji2number(kanjiNumbers[i]));
362
+ }
363
+ catch (error) {
364
+ // ignore
365
+ }
360
366
  }
361
367
  return string;
362
368
  };
@@ -402,8 +408,8 @@
402
408
  };
403
409
 
404
410
  // JIS 第2水準 => 第1水準 及び 旧字体 => 新字体
405
- var JIS_OLD_KANJI = '亞,圍,壹,榮,驛,應,櫻,假,會,懷,覺,樂,陷,歡,氣,戲,據,挾,區,徑,溪,輕,藝,儉,圈,權,嚴,恆,國,齋,雜,蠶,殘,兒,實,釋,從,縱,敍,燒,條,剩,壤,釀,眞,盡,醉,髓,聲,竊,淺,錢,禪,爭,插,騷,屬,對,滯,擇,單,斷,癡,鑄,敕,鐵,傳,黨,鬪,屆,腦,廢,發,蠻,拂,邊,瓣,寶,沒,滿,藥,餘,樣,亂,兩,禮,靈,爐,灣,惡,醫,飮,營,圓,歐,奧,價,繪,擴,學,罐,勸,觀,歸,犧,擧,狹,驅,莖,經,繼,缺,劍,檢,顯,廣,鑛,碎,劑,參,慘,絲,辭,舍,壽,澁,肅,將,證,乘,疊,孃,觸,寢,圖,穗,樞,齊,攝,戰,潛,雙,莊,裝,藏,續,體,臺,澤,膽,彈,蟲,廳,鎭,點,燈,盜,獨,貳,霸,賣,髮,祕,佛,變,辯,豐,飜,默,與,譽,謠,覽,獵,勵,齡,勞,壓,爲,隱,衞,鹽,毆,穩,畫,壞,殼,嶽,卷,關,顏,僞,舊,峽,曉,勳,惠,螢,鷄,縣,險,獻,驗,效,號,濟,册,棧,贊,齒,濕,寫,收,獸,處,稱,奬,淨,繩,讓,囑,愼,粹,隨,數,靜,專,踐,纖,壯,搜,總,臟,墮,帶,瀧,擔,團,遲,晝,聽,遞,轉,當,稻,讀,惱,拜,麥,拔,濱,竝,辨,舖,襃,萬,譯,豫,搖,來,龍,壘,隸,戀,樓,鰺,鶯,蠣,攪,竈,灌,諫,頸,礦,蘂,靱,賤,壺,礪,檮,濤,邇,蠅,檜,儘,藪,籠,彌'.split(/,/);
406
- var JIS_NEW_KANJI = '亜,囲,壱,栄,駅,応,桜,仮,会,懐,覚,楽,陥,歓,気,戯,拠,挟,区,径,渓,軽,芸,倹,圏,権,厳,恒,国,斎,雑,蚕,残,児,実,釈,従,縦,叙,焼,条,剰,壌,醸,真,尽,酔,髄,声,窃,浅,銭,禅,争,挿,騒,属,対,滞,択,単,断,痴,鋳,勅,鉄,伝,党,闘,届,脳,廃,発,蛮,払,辺,弁,宝,没,満,薬,余,様,乱,両,礼,霊,炉,湾,悪,医,飲,営,円,欧,奥,価,絵,拡,学,缶,勧,観,帰,犠,挙,狭,駆,茎,経,継,欠,剣,検,顕,広,鉱,砕,剤,参,惨,糸,辞,舎,寿,渋,粛,将,証,乗,畳,嬢,触,寝,図,穂,枢,斉,摂,戦,潜,双,荘,装,蔵,続,体,台,沢,胆,弾,虫,庁,鎮,点,灯,盗,独,弐,覇,売,髪,秘,仏,変,弁,豊,翻,黙,与,誉,謡,覧,猟,励,齢,労,圧,為,隠,衛,塩,殴,穏,画,壊,殻,岳,巻,関,顔,偽,旧,峡,暁,勲,恵,蛍,鶏,県,険,献,験,効,号,済,冊,桟,賛,歯,湿,写,収,獣,処,称,奨,浄,縄,譲,嘱,慎,粋,随,数,静,専,践,繊,壮,捜,総,臓,堕,帯,滝,担,団,遅,昼,聴,逓,転,当,稲,読,悩,拝,麦,抜,浜,並,弁,舗,褒,万,訳,予,揺,来,竜,塁,隷,恋,楼,鯵,鴬,蛎,撹,竃,潅,諌,頚,砿,蕊,靭,賎,壷,砺,梼,涛,迩,蝿,桧,侭,薮,篭,弥'.split(/,/);
411
+ var JIS_OLD_KANJI = '亞,圍,壹,榮,驛,應,櫻,假,會,懷,覺,樂,陷,歡,氣,戲,據,挾,區,徑,溪,輕,藝,儉,圈,權,嚴,恆,國,齋,雜,蠶,殘,兒,實,釋,從,縱,敍,燒,條,剩,壤,釀,眞,盡,醉,髓,聲,竊,淺,錢,禪,爭,插,騷,屬,對,滯,擇,單,斷,癡,鑄,敕,鐵,傳,黨,鬪,屆,腦,廢,發,蠻,拂,邊,瓣,寶,沒,滿,藥,餘,樣,亂,兩,禮,靈,爐,灣,惡,醫,飮,營,圓,歐,奧,價,繪,擴,學,罐,勸,觀,歸,犧,擧,狹,驅,莖,經,繼,缺,劍,檢,顯,廣,鑛,碎,劑,參,慘,絲,辭,舍,壽,澁,肅,將,證,乘,疊,孃,觸,寢,圖,穗,樞,齊,攝,戰,潛,雙,莊,裝,藏,續,體,臺,澤,膽,彈,蟲,廳,鎭,點,燈,盜,獨,貳,霸,賣,髮,祕,佛,變,辯,豐,飜,默,與,譽,謠,覽,獵,勵,齡,勞,壓,爲,隱,衞,鹽,毆,穩,畫,壞,殼,嶽,卷,關,顏,僞,舊,峽,曉,勳,惠,螢,鷄,縣,險,獻,驗,效,號,濟,册,棧,贊,齒,濕,寫,收,獸,處,稱,奬,淨,繩,讓,囑,愼,粹,隨,數,靜,專,踐,纖,壯,搜,總,臟,墮,帶,瀧,擔,團,遲,晝,聽,遞,轉,當,稻,讀,惱,拜,麥,拔,濱,竝,辨,舖,襃,萬,譯,豫,搖,來,龍,壘,隸,戀,樓,鰺,鶯,蠣,攪,竈,灌,諫,頸,礦,蘂,靱,賤,壺,礪,檮,濤,邇,蠅,檜,儘,藪,籠,彌,麩'.split(/,/);
412
+ var JIS_NEW_KANJI = '亜,囲,壱,栄,駅,応,桜,仮,会,懐,覚,楽,陥,歓,気,戯,拠,挟,区,径,渓,軽,芸,倹,圏,権,厳,恒,国,斎,雑,蚕,残,児,実,釈,従,縦,叙,焼,条,剰,壌,醸,真,尽,酔,髄,声,窃,浅,銭,禅,争,挿,騒,属,対,滞,択,単,断,痴,鋳,勅,鉄,伝,党,闘,届,脳,廃,発,蛮,払,辺,弁,宝,没,満,薬,余,様,乱,両,礼,霊,炉,湾,悪,医,飲,営,円,欧,奥,価,絵,拡,学,缶,勧,観,帰,犠,挙,狭,駆,茎,経,継,欠,剣,検,顕,広,鉱,砕,剤,参,惨,糸,辞,舎,寿,渋,粛,将,証,乗,畳,嬢,触,寝,図,穂,枢,斉,摂,戦,潜,双,荘,装,蔵,続,体,台,沢,胆,弾,虫,庁,鎮,点,灯,盗,独,弐,覇,売,髪,秘,仏,変,弁,豊,翻,黙,与,誉,謡,覧,猟,励,齢,労,圧,為,隠,衛,塩,殴,穏,画,壊,殻,岳,巻,関,顔,偽,旧,峡,暁,勲,恵,蛍,鶏,県,険,献,験,効,号,済,冊,桟,賛,歯,湿,写,収,獣,処,称,奨,浄,縄,譲,嘱,慎,粋,随,数,静,専,践,繊,壮,捜,総,臓,堕,帯,滝,担,団,遅,昼,聴,逓,転,当,稲,読,悩,拝,麦,抜,浜,並,弁,舗,褒,万,訳,予,揺,来,竜,塁,隷,恋,楼,鯵,鴬,蛎,撹,竃,潅,諌,頚,砿,蕊,靭,賎,壷,砺,梼,涛,迩,蝿,桧,侭,薮,篭,弥,麸'.split(/,/);
407
413
  var JIS_KANJI_REGEX_PATTERNS = JIS_OLD_KANJI.map(function (old, i) {
408
414
  var pattern = old + "|" + JIS_NEW_KANJI[i];
409
415
  return [pattern, old, JIS_NEW_KANJI[i]];
@@ -422,6 +428,7 @@
422
428
  _str = _str
423
429
  .replace(/三栄町|四谷三栄町/g, '(三栄町|四谷三栄町)')
424
430
  .replace(/鬮野川|くじ野川|くじの川/g, '(鬮野川|くじ野川|くじの川)')
431
+ .replace(/柿碕町|柿さき町/g, '(柿碕町|柿さき町)')
425
432
  .replace(/通り|とおり/g, '(通り|とおり)')
426
433
  .replace(/埠頭|ふ頭/g, '(埠頭|ふ頭)')
427
434
  .replace(/番町|番丁/g, '(番町|番丁)')
@@ -1227,6 +1234,7 @@
1227
1234
  var cachedTowns = {};
1228
1235
  var cachedGaikuListItem = {};
1229
1236
  var cachedResidentials = {};
1237
+ var cachedAddrs = {}; // TODO: use LRU
1230
1238
  var cachedSameNamedPrefectureCityRegexPatterns = undefined;
1231
1239
  var getPrefectures = function () { return __awaiter(void 0, void 0, void 0, function () {
1232
1240
  var prefsResp, data;
@@ -1236,7 +1244,7 @@
1236
1244
  if (typeof cachedPrefectures !== 'undefined') {
1237
1245
  return [2 /*return*/, cachedPrefectures];
1238
1246
  }
1239
- return [4 /*yield*/, __internals.fetch('.json')]; // ja.json
1247
+ return [4 /*yield*/, __internals.fetch('.json', { level: 1 })]; // ja.json
1240
1248
  case 1:
1241
1249
  prefsResp = _a.sent() // ja.json
1242
1250
  ;
@@ -1290,7 +1298,7 @@
1290
1298
  if (typeof cachedTown !== 'undefined') {
1291
1299
  return [2 /*return*/, cachedTown];
1292
1300
  }
1293
- return [4 /*yield*/, __internals.fetch(['', encodeURI(pref), encodeURI(city) + '.json'].join('/'))];
1301
+ return [4 /*yield*/, __internals.fetch(['', encodeURI(pref), encodeURI(city) + '.json'].join('/'), { level: 3, pref: pref, city: city })];
1294
1302
  case 1:
1295
1303
  townsResp = _a.sent();
1296
1304
  return [4 /*yield*/, townsResp.json()];
@@ -1305,7 +1313,10 @@
1305
1313
  return __generator(this, function (_b) {
1306
1314
  switch (_b.label) {
1307
1315
  case 0:
1308
- cacheKey = pref + "-" + city + "-" + town;
1316
+ if (currentConfig.interfaceVersion > 1) {
1317
+ throw new Error("Invalid config.interfaceVersion: " + currentConfig.interfaceVersion + "'}. Please set config.interfaceVersion to 1.");
1318
+ }
1319
+ cacheKey = pref + "-" + city + "-" + town + "-v" + currentConfig.interfaceVersion;
1309
1320
  cache = cachedGaikuListItem[cacheKey];
1310
1321
  if (typeof cache !== 'undefined') {
1311
1322
  return [2 /*return*/, cache];
@@ -1333,7 +1344,10 @@
1333
1344
  return __generator(this, function (_b) {
1334
1345
  switch (_b.label) {
1335
1346
  case 0:
1336
- cacheKey = pref + "-" + city + "-" + town;
1347
+ if (currentConfig.interfaceVersion > 1) {
1348
+ throw new Error("Invalid config.interfaceVersion: " + currentConfig.interfaceVersion + "'}. Please set config.interfaceVersion to 1.");
1349
+ }
1350
+ cacheKey = pref + "-" + city + "-" + town + "-v" + currentConfig.interfaceVersion;
1337
1351
  cache = cachedResidentials[cacheKey];
1338
1352
  if (typeof cache !== 'undefined') {
1339
1353
  return [2 /*return*/, cache];
@@ -1367,6 +1381,39 @@
1367
1381
  }
1368
1382
  });
1369
1383
  }); };
1384
+ var getAddrs = function (pref, city, town) { return __awaiter(void 0, void 0, void 0, function () {
1385
+ var cacheKey, cache, addrsResp, addrs;
1386
+ return __generator(this, function (_b) {
1387
+ switch (_b.label) {
1388
+ case 0:
1389
+ if (currentConfig.interfaceVersion < 2) {
1390
+ throw new Error("Invalid config.interfaceVersion: " + currentConfig.interfaceVersion + "'}. Please set config.interfaceVersion to 2 or higher");
1391
+ }
1392
+ cacheKey = pref + "-" + city + "-" + town + "-v" + currentConfig.interfaceVersion;
1393
+ cache = cachedAddrs[cacheKey];
1394
+ if (typeof cache !== 'undefined') {
1395
+ return [2 /*return*/, cache];
1396
+ }
1397
+ return [4 /*yield*/, __internals.fetch(['', encodeURI(pref), encodeURI(city), encodeURI(town) + '.json'].join('/'), { level: 8, pref: pref, city: city, town: town })];
1398
+ case 1:
1399
+ addrsResp = _b.sent();
1400
+ _b.label = 2;
1401
+ case 2:
1402
+ _b.trys.push([2, 4, , 5]);
1403
+ return [4 /*yield*/, addrsResp.json()];
1404
+ case 3:
1405
+ addrs = (_b.sent());
1406
+ return [3 /*break*/, 5];
1407
+ case 4:
1408
+ _b.sent();
1409
+ addrs = [];
1410
+ return [3 /*break*/, 5];
1411
+ case 5:
1412
+ addrs.sort(function (res1, res2) { return res1.addr.length - res2.addr.length; });
1413
+ return [2 /*return*/, (cachedAddrs[cacheKey] = addrs)];
1414
+ }
1415
+ });
1416
+ }); };
1370
1417
  // 十六町 のように漢数字と町が連結しているか
1371
1418
  var isKanjiNumberFollewedByCho = function (targetTownName) {
1372
1419
  var xCho = targetTownName.match(/.町/g);
@@ -1376,9 +1423,9 @@
1376
1423
  return kanjiNumbers.length > 0;
1377
1424
  };
1378
1425
  var getTownRegexPatterns = function (pref, city) { return __awaiter(void 0, void 0, void 0, function () {
1379
- var cachedResult, pre_towns, townSet, towns, isKyoto, _i, pre_towns_1, town, originalTown, townAbbr, patterns;
1380
- return __generator(this, function (_a) {
1381
- switch (_a.label) {
1426
+ var cachedResult, pre_towns, townSet, towns, isKyoto, _i, pre_towns_1, town, originalTown, townAbbr, patterns, _a, towns_1, town, chomeMatch, chomeNamePart, chomeNum, pattern;
1427
+ return __generator(this, function (_b) {
1428
+ switch (_b.label) {
1382
1429
  case 0:
1383
1430
  cachedResult = cachedTownRegexes.get(pref + "-" + city);
1384
1431
  if (typeof cachedResult !== 'undefined') {
@@ -1386,7 +1433,7 @@
1386
1433
  }
1387
1434
  return [4 /*yield*/, getTowns(pref, city)];
1388
1435
  case 1:
1389
- pre_towns = _a.sent();
1436
+ pre_towns = _b.sent();
1390
1437
  townSet = new Set(pre_towns.map(function (town) { return town.town; }));
1391
1438
  towns = [];
1392
1439
  isKyoto = city.match(/^京都市/);
@@ -1452,6 +1499,18 @@
1452
1499
  }));
1453
1500
  return [town, pattern];
1454
1501
  });
1502
+ // X丁目の丁目なしの数字だけ許容するため、最後に数字だけ追加していく
1503
+ for (_a = 0, towns_1 = towns; _a < towns_1.length; _a++) {
1504
+ town = towns_1[_a];
1505
+ chomeMatch = town.town.match(/([^一二三四五六七八九十]+)([一二三四五六七八九十]+)(丁目?)/);
1506
+ if (!chomeMatch) {
1507
+ continue;
1508
+ }
1509
+ chomeNamePart = chomeMatch[1];
1510
+ chomeNum = chomeMatch[2];
1511
+ pattern = toRegexPattern("^" + chomeNamePart + "(" + chomeNum + "|" + kan2num(chomeNum) + ")");
1512
+ patterns.push([town, pattern]);
1513
+ }
1455
1514
  cachedTownRegexes.set(pref + "-" + city, patterns);
1456
1515
  return [2 /*return*/, patterns];
1457
1516
  }
@@ -1586,10 +1645,32 @@
1586
1645
  }
1587
1646
  });
1588
1647
  }); };
1648
+ var normalizeAddrPart = function (addr, pref, city, town) { return __awaiter(void 0, void 0, void 0, function () {
1649
+ var addrListItem, addrItem, other;
1650
+ return __generator(this, function (_a) {
1651
+ switch (_a.label) {
1652
+ case 0: return [4 /*yield*/, getAddrs(pref, city, town)
1653
+ // 住居表示住所、および地番住所が見つからなかった
1654
+ ];
1655
+ case 1:
1656
+ addrListItem = _a.sent();
1657
+ // 住居表示住所、および地番住所が見つからなかった
1658
+ if (addrListItem.length === 0) {
1659
+ return [2 /*return*/, null];
1660
+ }
1661
+ addrItem = addrListItem.find(function (item) { return addr.startsWith(item.addr); });
1662
+ if (addrItem) {
1663
+ other = addr.replace(addrItem.addr, '').trim();
1664
+ return [2 /*return*/, { addr: addrItem.addr, other: other, lat: addrItem.lat, lng: addrItem.lng }];
1665
+ }
1666
+ return [2 /*return*/, null];
1667
+ }
1668
+ });
1669
+ }); };
1589
1670
  var normalize$1 = function (address, _option) {
1590
1671
  if (_option === void 0) { _option = defaultOption; }
1591
1672
  return __awaiter(void 0, void 0, void 0, function () {
1592
- var option, addr, pref, city, town, lat, lng, level, normalized, prefectures, prefs, prefPatterns, sameNamedPrefectureCityRegexPatterns, i, _a, prefectureCity, reg, match, i, _b, _pref, pattern, match, matched, _pref, cities, cityPatterns, i, _c, _city, pattern, match, i, normalized_1, cities, cityPatterns, i, _d, _city, pattern, match, result;
1673
+ var option, addr, pref, city, town, lat, lng, level, normalized, prefectures, prefs, prefPatterns, sameNamedPrefectureCityRegexPatterns, i, _a, prefectureCity, reg, match, i, _b, _pref, pattern, match, matched, _pref, cities, cityPatterns, i, _c, _city, pattern, match, i, normalized_1, cities, cityPatterns, i, _d, _city, pattern, match, normalizedAddrPart, other, result, result;
1593
1674
  return __generator(this, function (_e) {
1594
1675
  switch (_e.label) {
1595
1676
  case 0:
@@ -1732,7 +1813,7 @@
1732
1813
  });
1733
1814
  })
1734
1815
  .replace(/(([0-9〇一二三四五六七八九十百千]+)(番地?)([0-9〇一二三四五六七八九十百千]+)号)\s*(.+)/, '$1 $5')
1735
- .replace(/([0-9〇一二三四五六七八九十百千]+)(番地?)([0-9〇一二三四五六七八九十百千]+)号?/, '$1-$3')
1816
+ .replace(/([0-9〇一二三四五六七八九十百千]+)\s*(番地?)\s*([0-9〇一二三四五六七八九十百千]+)\s*号?/, '$1-$3')
1736
1817
  .replace(/([0-9〇一二三四五六七八九十百千]+)番地?/, '$1')
1737
1818
  .replace(/([0-9〇一二三四五六七八九十百千]+)の/g, '$1-')
1738
1819
  .replace(/([0-9〇一二三四五六七八九十百千]+)[--﹣−‐⁃‑‒–—﹘―⎯⏤ーー─━]/g, function (match) {
@@ -1749,7 +1830,7 @@
1749
1830
  // `-1` のようなケース
1750
1831
  return kan2num(s);
1751
1832
  })
1752
- .replace(/-[^0-9]+([0-9〇一二三四五六七八九十百千]+)/, function (s) {
1833
+ .replace(/-[^0-9]([0-9〇一二三四五六七八九十百千]+)/, function (s) {
1753
1834
  // `-あ1` のようなケース
1754
1835
  return kan2num(zen2han(s));
1755
1836
  })
@@ -1762,12 +1843,52 @@
1762
1843
  _e.label = 8;
1763
1844
  case 8:
1764
1845
  addr = patchAddr(pref, city, town, addr);
1765
- if (!(option.level > 3 && normalized && town)) return [3 /*break*/, 10];
1766
- return [4 /*yield*/, normalizeResidentialPart(addr, pref, city, town)];
1846
+ if (pref)
1847
+ level = level + 1;
1848
+ if (city)
1849
+ level = level + 1;
1850
+ if (town)
1851
+ level = level + 1;
1852
+ if (option.level <= 3 || level < 3) {
1853
+ return [2 /*return*/, { pref: pref, city: city, town: town, addr: addr, level: level, lat: lat, lng: lng }];
1854
+ }
1855
+ if (!(currentConfig.interfaceVersion === 2)) return [3 /*break*/, 10];
1856
+ return [4 /*yield*/, normalizeAddrPart(addr, pref, city, town)];
1767
1857
  case 9:
1768
- normalized = _e.sent();
1769
- _e.label = 10;
1858
+ normalizedAddrPart = _e.sent();
1859
+ other = undefined;
1860
+ if (normalizedAddrPart) {
1861
+ addr = normalizedAddrPart.addr;
1862
+ if (normalizedAddrPart.other) {
1863
+ other = normalizedAddrPart.other;
1864
+ }
1865
+ if (normalizedAddrPart.lat !== null)
1866
+ lat = parseFloat(normalizedAddrPart.lat);
1867
+ if (normalizedAddrPart.lng !== null)
1868
+ lng = parseFloat(normalizedAddrPart.lng);
1869
+ level = 8;
1870
+ }
1871
+ result = {
1872
+ pref: pref,
1873
+ city: city,
1874
+ town: town,
1875
+ addr: addr,
1876
+ level: level,
1877
+ lat: lat,
1878
+ lng: lng,
1879
+ };
1880
+ if (other) {
1881
+ result.other = other;
1882
+ }
1883
+ return [2 /*return*/, result];
1770
1884
  case 10:
1885
+ if (!(currentConfig.interfaceVersion === 1)) return [3 /*break*/, 13];
1886
+ if (!(option.level > 3 && normalized && town)) return [3 /*break*/, 12];
1887
+ return [4 /*yield*/, normalizeResidentialPart(addr, pref, city, town)];
1888
+ case 11:
1889
+ normalized = _e.sent();
1890
+ _e.label = 12;
1891
+ case 12:
1771
1892
  if (normalized) {
1772
1893
  lat = parseFloat(normalized.lat);
1773
1894
  lng = parseFloat(normalized.lng);
@@ -1776,12 +1897,6 @@
1776
1897
  lat = null;
1777
1898
  lng = null;
1778
1899
  }
1779
- if (pref)
1780
- level = level + 1;
1781
- if (city)
1782
- level = level + 1;
1783
- if (town)
1784
- level = level + 1;
1785
1900
  result = {
1786
1901
  pref: pref,
1787
1902
  city: city,
@@ -1801,6 +1916,7 @@
1801
1916
  result.level = 8;
1802
1917
  }
1803
1918
  return [2 /*return*/, result];
1919
+ case 13: throw new Error('invalid interfaceVersion');
1804
1920
  }
1805
1921
  });
1806
1922
  });
@@ -0,0 +1,3 @@
1
+ import * as Normalize from './normalize';
2
+ export declare const config: Normalize.Config;
3
+ export declare const normalize: Normalize.Normalizer;