+12
-36
| { | ||
| "name": "ken-all", | ||
| "version": "0.4.2", | ||
| "version": "0.5.0", | ||
| "description": "Ken All は、郵便番号で住所を検索できる npm パッケージです。", | ||
@@ -11,4 +11,3 @@ "keywords": [ | ||
| "engines": { | ||
| "node": ">=12.22.2", | ||
| "yarn": ">=1.19.0" | ||
| "node": ">=18" | ||
| }, | ||
@@ -35,38 +34,15 @@ "homepage": "https://github.com/numb86/ken-all", | ||
| "scripts": { | ||
| "build": "yarn && mkdir -p ./esm && rm -rf esm/* && tsc -p ./tsconfig.esm.json", | ||
| "lint": "run-p lint:*", | ||
| "lint:src": "eslint './src/**/*.ts'", | ||
| "lint:generateCsv": "eslint './generateCsv/**/*.ts'", | ||
| "lint:test": "eslint './test/**/*.ts'", | ||
| "test": "mocha --require espower-typescript/guess test/**/*.ts", | ||
| "type-check": "run-p type-check:*", | ||
| "type-check:src": "tsc src/*.ts --noEmit", | ||
| "type-check:generateCsv": "tsc generateCsv/*.ts --noEmit", | ||
| "generate-csv": "ts-node generateCsv/index.ts", | ||
| "release": "standard-version", | ||
| "commitlint": "git describe --abbrev=0 --tags | xargs -I@ commitlint --from=@", | ||
| "prepublishOnly": "yarn run build" | ||
| "build": "npm ci && mkdir -p ./esm && rm -rf esm/* && tsc -p ./tsconfig.esm.json", | ||
| "lint": "oxlint src test", | ||
| "test": "tsx --test test/**/*.test.ts", | ||
| "type-check": "tsc --noEmit", | ||
| "prepublishOnly": "npm run build" | ||
| }, | ||
| "devDependencies": { | ||
| "@commitlint/cli": "^9.1.1", | ||
| "@commitlint/config-conventional": "10", | ||
| "@types/mocha": "^7.0.1", | ||
| "@types/node": "^14.14.35", | ||
| "@types/power-assert": "^1.5.3", | ||
| "@typescript-eslint/eslint-plugin": "^4.18.0", | ||
| "@typescript-eslint/parser": "^4.18.0", | ||
| "eslint": "^7.22.0", | ||
| "eslint-config-airbnb-base": "^14.2.1", | ||
| "eslint-config-prettier": "^8.1.0", | ||
| "eslint-plugin-import": "^2.22.1", | ||
| "espower-typescript": "^9.0.2", | ||
| "iconv-lite": "^0.5.1", | ||
| "mocha": "^7.1.2", | ||
| "npm-run-all": "^4.1.5", | ||
| "power-assert": "^1.6.1", | ||
| "prettier": "^2.2.1", | ||
| "standard-version": "^9.0.0", | ||
| "ts-node": "^8.4.1", | ||
| "typescript": "^4.2.3" | ||
| "@types/node": "^24.5.0", | ||
| "oxlint": "^1.43.0", | ||
| "prettier": "^3.0.0", | ||
| "tsx": "^4.20.5", | ||
| "typescript": "7.0.2" | ||
| } | ||
| } |
+1
-19
@@ -174,13 +174,7 @@ <div align="center"> | ||
| Node.js には`fetch`が存在しないので、その対応が必要になります。 | ||
| また、ES Modules で利用するか CommonJS で利用するかで、コードが変わります。 | ||
| いずれも Node.js のバージョン`12.22.1`で確認しています。 | ||
| Node.js 18 以降ではグローバルに`fetch`が存在するので、そのまま利用できます。 | ||
| ```js | ||
| // ESM | ||
| import fetch from "node-fetch"; | ||
| import KenAll from "ken-all"; | ||
| global.fetch = fetch; | ||
| // [['東京都', '千代田区', '大手町']]; | ||
@@ -190,14 +184,2 @@ KenAll("1000004").then((res) => console.log(res)); | ||
| ```javascript | ||
| // CJS | ||
| const fetch = require("node-fetch"); | ||
| global.fetch = fetch; | ||
| import("ken-all").then((KenAll) => { | ||
| // [['東京都', '千代田区', '大手町']]; | ||
| KenAll.default("1000004").then((res) => console.log(res)); | ||
| }); | ||
| ``` | ||
| ## script タグを使った読み込み | ||
@@ -204,0 +186,0 @@ |
| declare type Address = [string, string, string, string]; | ||
| export declare type NormalizedAddress = [string, string, string]; | ||
| export declare const generateAddressListFromText: (rawData: string) => Address[]; | ||
| export declare const extractTargetAddress: (postCodeBack: string, addressList: Address[]) => Address[]; | ||
| export declare const normalizeAddressList: (addressList: Address[]) => NormalizedAddress[]; | ||
| export {}; |
| var __spreadArray = (this && this.__spreadArray) || function (to, from) { | ||
| for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) | ||
| to[j] = from[i]; | ||
| return to; | ||
| }; | ||
| export var generateAddressListFromText = function (rawData) { | ||
| var lines = rawData | ||
| .split('\n') | ||
| .filter(function (line) { return line.length > 0; }); | ||
| return lines.map(function (line) { | ||
| var address = line.split(','); | ||
| if (address.length !== 4) | ||
| throw new Error('CSV was broken.'); | ||
| return address.map(function (item) { | ||
| return item.replace(/"/g, ''); | ||
| }); | ||
| }); | ||
| }; | ||
| export var extractTargetAddress = function (postCodeBack, addressList) { | ||
| return addressList.filter(function (address) { return address[0] === postCodeBack; }); | ||
| }; | ||
| var removeFirstItemFromAddress = function (address) { | ||
| var copiedArray = __spreadArray([], address); | ||
| copiedArray.shift(); | ||
| if (copiedArray.length !== 3) { | ||
| throw new Error('Failed removeFirstItemFromAddress.'); | ||
| } | ||
| return copiedArray; | ||
| }; | ||
| export var normalizeAddressList = function (addressList) { | ||
| return addressList.map(function (address) { return removeFirstItemFromAddress(address); }); | ||
| }; | ||
| //# sourceMappingURL=address.js.map |
| {"version":3,"file":"address.js","sourceRoot":"","sources":["../src/address.ts"],"names":[],"mappings":";;;;;AAGA,MAAM,CAAC,IAAM,2BAA2B,GAAG,UAAC,OAAe;IACzD,IAAM,KAAK,GAAa,OAAO;SAC5B,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,UAAC,IAAY,IAAc,OAAA,IAAI,CAAC,MAAM,GAAG,CAAC,EAAf,CAAe,CAAC,CAAC;IACtD,OAAO,KAAK,CAAC,GAAG,CACd,UAAC,IAAY;QACX,IAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;QAC7D,OAAO,OAAO,CAAC,GAAG,CAAC,UAAC,IAAY;YAC9B,OAAA,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;QAAtB,CAAsB,CACZ,CAAC;IACf,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAClC,YAAoB,EACpB,WAAsB;IAEtB,OAAA,WAAW,CAAC,MAAM,CAChB,UAAC,OAAgB,IAAc,OAAA,OAAO,CAAC,CAAC,CAAC,KAAK,YAAY,EAA3B,CAA2B,CAC3D;AAFD,CAEC,CAAC;AAEJ,IAAM,0BAA0B,GAAG,UAAC,OAAgB;IAClD,IAAM,WAAW,qBAAO,OAAO,CAAC,CAAC;IACjC,WAAW,CAAC,KAAK,EAAE,CAAC;IACpB,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE;QAC5B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;KACvD;IACD,OAAO,WAAgC,CAAC;AAC1C,CAAC,CAAC;AAEF,MAAM,CAAC,IAAM,oBAAoB,GAAG,UAClC,WAAsB;IAEtB,OAAA,WAAW,CAAC,GAAG,CACb,UAAC,OAAgB,IAAwB,OAAA,0BAA0B,CAAC,OAAO,CAAC,EAAnC,CAAmC,CAC7E;AAFD,CAEC,CAAC"} |
| declare const fetchCsv: (postCodeFront: string) => Promise<Response>; | ||
| export default fetchCsv; |
| var fetchCsv = function (postCodeFront) { | ||
| return fetch("https://ken-all.numb86.net/csv/" + postCodeFront + ".csv", { mode: 'cors' }); | ||
| }; | ||
| export default fetchCsv; | ||
| //# sourceMappingURL=fetchCsv.js.map |
| {"version":3,"file":"fetchCsv.js","sourceRoot":"","sources":["../src/fetchCsv.ts"],"names":[],"mappings":"AAAA,IAAM,QAAQ,GAAG,UAAC,aAAqB;IACrC,OAAA,KAAK,CAAC,oCAAkC,aAAa,SAAM,EAAE,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC;AAA5E,CAA4E,CAAC;AAE/E,eAAe,QAAQ,CAAC"} |
| import { NormalizedAddress } from './address.js'; | ||
| declare const KenAll: (postCode: string) => Promise<NormalizedAddress[]>; | ||
| export default KenAll; |
-70
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
| function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| return new (P || (P = Promise))(function (resolve, reject) { | ||
| function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } | ||
| function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } | ||
| function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } | ||
| step((generator = generator.apply(thisArg, _arguments || [])).next()); | ||
| }); | ||
| }; | ||
| var __generator = (this && this.__generator) || function (thisArg, body) { | ||
| var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; | ||
| return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; | ||
| function verb(n) { return function (v) { return step([n, v]); }; } | ||
| function step(op) { | ||
| if (f) throw new TypeError("Generator is already executing."); | ||
| while (_) try { | ||
| if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; | ||
| if (y = 0, t) op = [op[0] & 2, t.value]; | ||
| switch (op[0]) { | ||
| case 0: case 1: t = op; break; | ||
| case 4: _.label++; return { value: op[1], done: false }; | ||
| case 5: _.label++; y = op[1]; op = [0]; continue; | ||
| case 7: op = _.ops.pop(); _.trys.pop(); continue; | ||
| default: | ||
| if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } | ||
| if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } | ||
| if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } | ||
| if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } | ||
| if (t[2]) _.ops.pop(); | ||
| _.trys.pop(); continue; | ||
| } | ||
| op = body.call(thisArg, _); | ||
| } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } | ||
| if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; | ||
| } | ||
| }; | ||
| // To publish as an ESM package, need to use the .js extension | ||
| import { generateAddressListFromText, extractTargetAddress, normalizeAddressList, } from './address.js'; | ||
| import fetchCsv from './fetchCsv.js'; | ||
| var KenAll = function (postCode) { return __awaiter(void 0, void 0, void 0, function () { | ||
| var res, rawData, addressList, targetList; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| if (typeof postCode !== 'string') { | ||
| throw new Error('The argument must be a string.'); | ||
| } | ||
| if (!/^[0-9]{7}$/.test(postCode)) { | ||
| throw new Error('The post code is always seven digits half-width numbers.'); | ||
| } | ||
| return [4 /*yield*/, fetchCsv(postCode.slice(0, 3))]; | ||
| case 1: | ||
| res = _a.sent(); | ||
| if (res.status === 404 || res.status === 403) { | ||
| return [2 /*return*/, []]; | ||
| } | ||
| if (res.status >= 400) { | ||
| throw new Error('Network error.'); | ||
| } | ||
| return [4 /*yield*/, res.text()]; | ||
| case 2: | ||
| rawData = _a.sent(); | ||
| addressList = generateAddressListFromText(rawData); | ||
| targetList = extractTargetAddress(postCode.slice(3), addressList); | ||
| return [2 /*return*/, normalizeAddressList(targetList)]; | ||
| } | ||
| }); | ||
| }); }; | ||
| export default KenAll; | ||
| //# sourceMappingURL=index.js.map |
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,8DAA8D;AAC9D,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,cAAc,CAAC;AACtB,OAAO,QAAQ,MAAM,eAAe,CAAC;AAErC,IAAM,MAAM,GAAG,UAAO,QAAgB;;;;;gBACpC,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE;oBAChC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;iBACnD;gBACD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;oBAChC,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;iBAC7E;gBAEW,qBAAM,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAA;;gBAA1C,GAAG,GAAG,SAAoC;gBAChD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBAC5C,sBAAO,EAAE,EAAC;iBACX;gBACD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;iBACnC;gBAEuB,qBAAM,GAAG,CAAC,IAAI,EAAE,EAAA;;gBAAlC,OAAO,GAAW,SAAgB;gBAElC,WAAW,GAAG,2BAA2B,CAAC,OAAO,CAAC,CAAC;gBACnD,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;gBACxE,sBAAO,oBAAoB,CAAC,UAAU,CAAC,EAAC;;;KACzC,CAAC;AAEF,eAAe,MAAM,CAAC"} |
Deprecated
MaintenanceThe maintainer of the package marked it as deprecated. This could indicate that a single version should not be used, or that the package is no longer maintained and any new vulnerabilities will not be fixed.
Empty package
Supply chain riskPackage does not contain any code. It may be removed, is name squatting, or the result of a faulty package publish.
Network access
Supply chain riskThis module accesses the network.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
5
-75%0
-100%7395
-57.56%3
-75%0
-100%1
Infinity%226
-7.38%