@sesamecare-oss/us-postal-codes 1.0.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/.commitlintrc.json +5 -0
- package/.eslintignore +10 -0
- package/.eslintrc.js +14 -0
- package/.github/workflows/nodejs.yml +62 -0
- package/.prettierrc.js +14 -0
- package/Makefile +15 -0
- package/README.md +13 -0
- package/assets/uspostalcodes.db +0 -0
- package/build/index.d.ts +11 -0
- package/build/index.js +26 -0
- package/build/index.js.map +1 -0
- package/build/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +67 -0
- package/src/index.ts +30 -0
- package/tsconfig.build.json +11 -0
- package/tsconfig.json +42 -0
- package/vitest.config.ts +19 -0
package/.eslintignore
ADDED
package/.eslintrc.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is generated by coconfig. Do not edit it directly.
|
|
3
|
+
* Instead, edit the coconfig.js or coconfig.ts file in your project root.
|
|
4
|
+
*
|
|
5
|
+
* See https://github.com/gas-buddy/coconfig for more information.
|
|
6
|
+
* @version coconfig@1.0.0
|
|
7
|
+
*/
|
|
8
|
+
const configModule = require('@openapi-typescript-infra/coconfig');
|
|
9
|
+
|
|
10
|
+
const configItem = configModule.default || configModule.config || configModule;
|
|
11
|
+
const { configuration } = configItem && configItem['.eslintrc.js'];
|
|
12
|
+
const resolved = typeof configuration === 'function' ? configuration() : configuration;
|
|
13
|
+
|
|
14
|
+
module.exports = resolved;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
name: Node build, test and publish
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
pull_request:
|
|
5
|
+
types: [assigned, opened, synchronize, reopened]
|
|
6
|
+
push:
|
|
7
|
+
branches:
|
|
8
|
+
- main
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: read
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
prepare:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
steps:
|
|
17
|
+
- name: Cleanup stale actions
|
|
18
|
+
uses: styfle/cancel-workflow-action@0.11.0
|
|
19
|
+
with:
|
|
20
|
+
access_token: ${{ github.token }}
|
|
21
|
+
|
|
22
|
+
build:
|
|
23
|
+
runs-on: ubuntu-latest
|
|
24
|
+
steps:
|
|
25
|
+
- uses: actions/checkout@v3
|
|
26
|
+
- name: Use Node.js 18
|
|
27
|
+
uses: actions/setup-node@v3
|
|
28
|
+
with:
|
|
29
|
+
node-version: 20
|
|
30
|
+
cache: yarn
|
|
31
|
+
- name: npm install, lint, build, and test
|
|
32
|
+
run: |
|
|
33
|
+
yarn install --immutable
|
|
34
|
+
yarn lint
|
|
35
|
+
yarn build
|
|
36
|
+
yarn test
|
|
37
|
+
env:
|
|
38
|
+
CI: true
|
|
39
|
+
|
|
40
|
+
publish-npm:
|
|
41
|
+
needs: build
|
|
42
|
+
if: github.ref == 'refs/heads/main'
|
|
43
|
+
permissions:
|
|
44
|
+
contents: write
|
|
45
|
+
issues: write
|
|
46
|
+
id-token: write
|
|
47
|
+
pull-requests: write
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@v1
|
|
51
|
+
- uses: actions/setup-node@v3
|
|
52
|
+
with:
|
|
53
|
+
node-version: 20
|
|
54
|
+
cache: yarn
|
|
55
|
+
- run: yarn install --immutable
|
|
56
|
+
- run: yarn build
|
|
57
|
+
- name: Release
|
|
58
|
+
env:
|
|
59
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
60
|
+
NPM_TOKEN: ${{ secrets.SESAMECARE_OSS_NPM_TOKEN }}
|
|
61
|
+
run: |
|
|
62
|
+
yarn dlx semantic-release
|
package/.prettierrc.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is generated by coconfig. Do not edit it directly.
|
|
3
|
+
* Instead, edit the coconfig.js or coconfig.ts file in your project root.
|
|
4
|
+
*
|
|
5
|
+
* See https://github.com/gas-buddy/coconfig for more information.
|
|
6
|
+
* @version coconfig@1.0.0
|
|
7
|
+
*/
|
|
8
|
+
const configModule = require('@openapi-typescript-infra/coconfig');
|
|
9
|
+
|
|
10
|
+
const configItem = configModule.default || configModule.config || configModule;
|
|
11
|
+
const { configuration } = configItem && configItem['.prettierrc.js'];
|
|
12
|
+
const resolved = typeof configuration === 'function' ? configuration() : configuration;
|
|
13
|
+
|
|
14
|
+
module.exports = resolved;
|
package/Makefile
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Download a list of US postal code data and build a sqlite3 db from it.
|
|
2
|
+
# This should be run periodically, but on the order of like a year, as things change VERY slowly.
|
|
3
|
+
uspostalcodes: assets/uspostalcodes.db
|
|
4
|
+
|
|
5
|
+
assets/uspostalcodes.db:
|
|
6
|
+
mkdir -p assets
|
|
7
|
+
rm -f assets/uspostalcodes.db
|
|
8
|
+
curl -o temp_input.zip https://download.geonames.org/export/zip/US.zip
|
|
9
|
+
unzip -p temp_input.zip US.txt | awk -F'\t' '{print $$2 "\t" $$3 "\t" $$5 "\t" $$10 "\t" $$11}' > temp_output.txt
|
|
10
|
+
rm temp_input.zip
|
|
11
|
+
sqlite3 assets/uspostalcodes.db "CREATE TABLE IF NOT EXISTS locations (id INTEGER PRIMARY KEY AUTOINCREMENT, postal_code TEXT, city TEXT, state TEXT, lat REAL, lng REAL);"
|
|
12
|
+
awk -F'\t' '{ gsub(/'\''/, "'\'''\''", $$1); gsub(/'\''/, "'\'''\''", $$2); gsub(/'\''/, "'\'''\''", $$3); print "INSERT INTO locations (postal_code, city, state, lat, lng) VALUES ('\''"$$1"'\'', '\''"$$2"'\'', '\''"$$3"'\'', "$$4", "$$5");"}' temp_output.txt | sqlite3 assets/uspostalcodes.db
|
|
13
|
+
sqlite3 assets/uspostalcodes.db "DELETE FROM locations WHERE state = '';"
|
|
14
|
+
sqlite3 assets/uspostalcodes.db "CREATE INDEX idx_postal_code ON locations (postal_code);"
|
|
15
|
+
rm temp_output.txt
|
package/README.md
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# us-postal-codes
|
|
2
|
+
|
|
3
|
+
Lookup city, state and geolocation by US postal codes. Includes infra for fetching the latest values.
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import { USPostalCodes } from '@sesamecare-oss/us-postal-codes';
|
|
7
|
+
|
|
8
|
+
const zips = new USPostalCodes();
|
|
9
|
+
await zips.open();
|
|
10
|
+
const results = await zips.lookup('02446');
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Uses [geonames zip code data](https://www.geonames.org/about.html) under [Creative Commons license](https://creativecommons.org/licenses/by/4.0/).
|
|
Binary file
|
package/build/index.d.ts
ADDED
package/build/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.USPostalCodes = void 0;
|
|
7
|
+
const path_1 = __importDefault(require("path"));
|
|
8
|
+
const sqlite3_1 = require("sqlite3");
|
|
9
|
+
const sqlite_1 = require("sqlite");
|
|
10
|
+
class USPostalCodes {
|
|
11
|
+
db;
|
|
12
|
+
async open() {
|
|
13
|
+
this.db = await (0, sqlite_1.open)({
|
|
14
|
+
filename: path_1.default.join(__dirname, '../assets/uspostalcodes.db'),
|
|
15
|
+
driver: sqlite3_1.Database,
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
async lookup(zipCode) {
|
|
19
|
+
if (!this.db) {
|
|
20
|
+
throw new Error('Postal code database unavailable');
|
|
21
|
+
}
|
|
22
|
+
return this.db.all('SELECT city, state, lat, lng FROM locations WHERE postal_code = ?', zipCode);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
exports.USPostalCodes = USPostalCodes;
|
|
26
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AAExB,qCAAqD;AAErD,mCAA8B;AAE9B,MAAa,aAAa;IACxB,EAAE,CAAuB;IAEzB,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,EAAE,GAAG,MAAM,IAAA,aAAI,EAAC;YACnB,QAAQ,EAAE,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,4BAA4B,CAAC;YAC5D,MAAM,EAAE,kBAAc;SACvB,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe;QAQ1B,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;SACrD;QACD,OAAO,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,mEAAmE,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;CACF;AAvBD,sCAuBC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"program":{"fileNames":["../node_modules/typescript/lib/lib.es5.d.ts","../node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/typescript/lib/lib.es2021.d.ts","../node_modules/typescript/lib/lib.es2022.d.ts","../node_modules/typescript/lib/lib.dom.d.ts","../node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/typescript/lib/lib.es2021.promise.d.ts","../node_modules/typescript/lib/lib.es2021.string.d.ts","../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../node_modules/typescript/lib/lib.es2021.intl.d.ts","../node_modules/typescript/lib/lib.es2022.array.d.ts","../node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/typescript/lib/lib.es2022.intl.d.ts","../node_modules/typescript/lib/lib.es2022.object.d.ts","../node_modules/typescript/lib/lib.es2022.sharedmemory.d.ts","../node_modules/typescript/lib/lib.es2022.string.d.ts","../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../node_modules/typescript/lib/lib.esnext.intl.d.ts","../node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/@types/node/assert.d.ts","../node_modules/@types/node/assert/strict.d.ts","../node_modules/undici-types/header.d.ts","../node_modules/undici-types/readable.d.ts","../node_modules/undici-types/file.d.ts","../node_modules/undici-types/fetch.d.ts","../node_modules/undici-types/formdata.d.ts","../node_modules/undici-types/connector.d.ts","../node_modules/undici-types/client.d.ts","../node_modules/undici-types/errors.d.ts","../node_modules/undici-types/dispatcher.d.ts","../node_modules/undici-types/global-dispatcher.d.ts","../node_modules/undici-types/global-origin.d.ts","../node_modules/undici-types/pool-stats.d.ts","../node_modules/undici-types/pool.d.ts","../node_modules/undici-types/handlers.d.ts","../node_modules/undici-types/balanced-pool.d.ts","../node_modules/undici-types/agent.d.ts","../node_modules/undici-types/mock-interceptor.d.ts","../node_modules/undici-types/mock-agent.d.ts","../node_modules/undici-types/mock-client.d.ts","../node_modules/undici-types/mock-pool.d.ts","../node_modules/undici-types/mock-errors.d.ts","../node_modules/undici-types/proxy-agent.d.ts","../node_modules/undici-types/api.d.ts","../node_modules/undici-types/cookies.d.ts","../node_modules/undici-types/patch.d.ts","../node_modules/undici-types/filereader.d.ts","../node_modules/undici-types/diagnostics-channel.d.ts","../node_modules/undici-types/websocket.d.ts","../node_modules/undici-types/content-type.d.ts","../node_modules/undici-types/cache.d.ts","../node_modules/undici-types/interceptors.d.ts","../node_modules/undici-types/index.d.ts","../node_modules/@types/node/globals.d.ts","../node_modules/@types/node/async_hooks.d.ts","../node_modules/@types/node/buffer.d.ts","../node_modules/@types/node/child_process.d.ts","../node_modules/@types/node/cluster.d.ts","../node_modules/@types/node/console.d.ts","../node_modules/@types/node/constants.d.ts","../node_modules/@types/node/crypto.d.ts","../node_modules/@types/node/dgram.d.ts","../node_modules/@types/node/diagnostics_channel.d.ts","../node_modules/@types/node/dns.d.ts","../node_modules/@types/node/dns/promises.d.ts","../node_modules/@types/node/domain.d.ts","../node_modules/@types/node/dom-events.d.ts","../node_modules/@types/node/events.d.ts","../node_modules/@types/node/fs.d.ts","../node_modules/@types/node/fs/promises.d.ts","../node_modules/@types/node/http.d.ts","../node_modules/@types/node/http2.d.ts","../node_modules/@types/node/https.d.ts","../node_modules/@types/node/inspector.d.ts","../node_modules/@types/node/module.d.ts","../node_modules/@types/node/net.d.ts","../node_modules/@types/node/os.d.ts","../node_modules/@types/node/path.d.ts","../node_modules/@types/node/perf_hooks.d.ts","../node_modules/@types/node/process.d.ts","../node_modules/@types/node/punycode.d.ts","../node_modules/@types/node/querystring.d.ts","../node_modules/@types/node/readline.d.ts","../node_modules/@types/node/readline/promises.d.ts","../node_modules/@types/node/repl.d.ts","../node_modules/@types/node/stream.d.ts","../node_modules/@types/node/stream/promises.d.ts","../node_modules/@types/node/stream/consumers.d.ts","../node_modules/@types/node/stream/web.d.ts","../node_modules/@types/node/string_decoder.d.ts","../node_modules/@types/node/test.d.ts","../node_modules/@types/node/timers.d.ts","../node_modules/@types/node/timers/promises.d.ts","../node_modules/@types/node/tls.d.ts","../node_modules/@types/node/trace_events.d.ts","../node_modules/@types/node/tty.d.ts","../node_modules/@types/node/url.d.ts","../node_modules/@types/node/util.d.ts","../node_modules/@types/node/v8.d.ts","../node_modules/@types/node/vm.d.ts","../node_modules/@types/node/wasi.d.ts","../node_modules/@types/node/worker_threads.d.ts","../node_modules/@types/node/zlib.d.ts","../node_modules/@types/node/globals.global.d.ts","../node_modules/@types/node/index.d.ts","../node_modules/sqlite3/lib/sqlite3.d.ts","../node_modules/sqlite/build/interfaces.d.ts","../node_modules/sqlite/build/Statement.d.ts","../node_modules/sqlite/build/Database.d.ts","../node_modules/sqlite/build/index.d.ts","../src/index.ts","../node_modules/@types/chai/index.d.ts","../node_modules/@types/chai-subset/index.d.ts","../node_modules/@types/json-schema/index.d.ts","../node_modules/@types/json5/index.d.ts","../node_modules/@types/normalize-package-data/index.d.ts","../node_modules/@types/semver/classes/semver.d.ts","../node_modules/@types/semver/functions/parse.d.ts","../node_modules/@types/semver/functions/valid.d.ts","../node_modules/@types/semver/functions/clean.d.ts","../node_modules/@types/semver/functions/inc.d.ts","../node_modules/@types/semver/functions/diff.d.ts","../node_modules/@types/semver/functions/major.d.ts","../node_modules/@types/semver/functions/minor.d.ts","../node_modules/@types/semver/functions/patch.d.ts","../node_modules/@types/semver/functions/prerelease.d.ts","../node_modules/@types/semver/functions/compare.d.ts","../node_modules/@types/semver/functions/rcompare.d.ts","../node_modules/@types/semver/functions/compare-loose.d.ts","../node_modules/@types/semver/functions/compare-build.d.ts","../node_modules/@types/semver/functions/sort.d.ts","../node_modules/@types/semver/functions/rsort.d.ts","../node_modules/@types/semver/functions/gt.d.ts","../node_modules/@types/semver/functions/lt.d.ts","../node_modules/@types/semver/functions/eq.d.ts","../node_modules/@types/semver/functions/neq.d.ts","../node_modules/@types/semver/functions/gte.d.ts","../node_modules/@types/semver/functions/lte.d.ts","../node_modules/@types/semver/functions/cmp.d.ts","../node_modules/@types/semver/functions/coerce.d.ts","../node_modules/@types/semver/classes/comparator.d.ts","../node_modules/@types/semver/classes/range.d.ts","../node_modules/@types/semver/functions/satisfies.d.ts","../node_modules/@types/semver/ranges/max-satisfying.d.ts","../node_modules/@types/semver/ranges/min-satisfying.d.ts","../node_modules/@types/semver/ranges/to-comparators.d.ts","../node_modules/@types/semver/ranges/min-version.d.ts","../node_modules/@types/semver/ranges/valid.d.ts","../node_modules/@types/semver/ranges/outside.d.ts","../node_modules/@types/semver/ranges/gtr.d.ts","../node_modules/@types/semver/ranges/ltr.d.ts","../node_modules/@types/semver/ranges/intersects.d.ts","../node_modules/@types/semver/ranges/simplify.d.ts","../node_modules/@types/semver/ranges/subset.d.ts","../node_modules/@types/semver/internals/identifiers.d.ts","../node_modules/@types/semver/index.d.ts"],"fileInfos":[{"version":"2ac9cdcfb8f8875c18d14ec5796a8b029c426f73ad6dc3ffb580c228b58d1c44","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"dc48272d7c333ccf58034c0026162576b7d50ea0e69c3b9292f803fc20720fd5","impliedFormat":1},{"version":"9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"5514e54f17d6d74ecefedc73c504eadffdeda79c7ea205cf9febead32d45c4bc","impliedFormat":1},{"version":"0075fa5ceda385bcdf3488e37786b5a33be730e8bc4aa3cf1e78c63891752ce8","affectsGlobalScope":true,"impliedFormat":1},{"version":"f296963760430fb65b4e5d91f0ed770a91c6e77455bacf8fa23a1501654ede0e","affectsGlobalScope":true,"impliedFormat":1},{"version":"09226e53d1cfda217317074a97724da3e71e2c545e18774484b61562afc53cd2","affectsGlobalScope":true,"impliedFormat":1},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true,"impliedFormat":1},{"version":"8b41361862022eb72fcc8a7f34680ac842aca802cf4bc1f915e8c620c9ce4331","affectsGlobalScope":true,"impliedFormat":1},{"version":"f7bd636ae3a4623c503359ada74510c4005df5b36de7f23e1db8a5c543fd176b","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"0c20f4d2358eb679e4ae8a4432bdd96c857a2960fd6800b21ec4008ec59d60ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true,"impliedFormat":1},{"version":"82d0d8e269b9eeac02c3bd1c9e884e85d483fcb2cd168bccd6bc54df663da031","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8deab98702588840be73d67f02412a2d45a417a3c097b2e96f7f3a42ac483d1","affectsGlobalScope":true,"impliedFormat":1},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"376d554d042fb409cb55b5cbaf0b2b4b7e669619493c5d18d5fa8bd67273f82a","affectsGlobalScope":true,"impliedFormat":1},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4138a3dd7cd6cf1f363ca0f905554e8d81b45844feea17786cdf1626cb8ea06","affectsGlobalScope":true,"impliedFormat":1},{"version":"6ff3e2452b055d8f0ec026511c6582b55d935675af67cdb67dd1dc671e8065df","affectsGlobalScope":true,"impliedFormat":1},{"version":"03de17b810f426a2f47396b0b99b53a82c1b60e9cba7a7edda47f9bb077882f4","affectsGlobalScope":true,"impliedFormat":1},{"version":"8184c6ddf48f0c98429326b428478ecc6143c27f79b79e85740f17e6feb090f1","affectsGlobalScope":true,"impliedFormat":1},{"version":"261c4d2cf86ac5a89ad3fb3fafed74cbb6f2f7c1d139b0540933df567d64a6ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"6af1425e9973f4924fca986636ac19a0cf9909a7e0d9d3009c349e6244e957b6","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"15a630d6817718a2ddd7088c4f83e4673fde19fa992d2eae2cf51132a302a5d3","affectsGlobalScope":true,"impliedFormat":1},{"version":"b7e9f95a7387e3f66be0ed6db43600c49cec33a3900437ce2fd350d9b7cb16f2","affectsGlobalScope":true,"impliedFormat":1},{"version":"01e0ee7e1f661acedb08b51f8a9b7d7f959e9cdb6441360f06522cc3aea1bf2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac17a97f816d53d9dd79b0d235e1c0ed54a8cc6a0677e9a3d61efb480b2a3e4e","affectsGlobalScope":true,"impliedFormat":1},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true,"impliedFormat":1},{"version":"ec0104fee478075cb5171e5f4e3f23add8e02d845ae0165bfa3f1099241fa2aa","affectsGlobalScope":true,"impliedFormat":1},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true,"impliedFormat":1},{"version":"9cc66b0513ad41cb5f5372cca86ef83a0d37d1c1017580b7dace3ea5661836df","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"709efdae0cb5df5f49376cde61daacc95cdd44ae4671da13a540da5088bf3f30","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"bc496ef4377553e461efcf7cc5a5a57cf59f9962aea06b5e722d54a36bf66ea1","affectsGlobalScope":true,"impliedFormat":1},{"version":"038a2f66a34ee7a9c2fbc3584c8ab43dff2995f8c68e3f566f4c300d2175e31e","affectsGlobalScope":true,"impliedFormat":1},{"version":"4fa6ed14e98aa80b91f61b9805c653ee82af3502dc21c9da5268d3857772ca05","affectsGlobalScope":true,"impliedFormat":1},{"version":"f5c92f2c27b06c1a41b88f6db8299205aee52c2a2943f7ed29bd585977f254e8","affectsGlobalScope":true,"impliedFormat":1},{"version":"930b0e15811f84e203d3c23508674d5ded88266df4b10abee7b31b2ac77632d2","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"b9ea5778ff8b50d7c04c9890170db34c26a5358cccba36844fe319f50a43a61a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"50d53ccd31f6667aff66e3d62adf948879a3a16f05d89882d1188084ee415bbc","affectsGlobalScope":true,"impliedFormat":1},{"version":"307c8b7ebbd7f23a92b73a4c6c0a697beca05b06b036c23a34553e5fe65e4fdc","affectsGlobalScope":true,"impliedFormat":1},{"version":"f35a831e4f0fe3b3697f4a0fe0e3caa7624c92b78afbecaf142c0f93abfaf379","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"09df3b4f1c937f02e7fee2836d4c4d7a63e66db70fd4d4e97126f4542cc21d9d","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"7180c03fd3cb6e22f911ce9ba0f8a7008b1a6ddbe88ccf16a9c8140ef9ac1686","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"54cb85a47d760da1c13c00add10d26b5118280d44d58e6908d8e89abbd9d7725","impliedFormat":1},{"version":"3e4825171442666d31c845aeb47fcd34b62e14041bb353ae2b874285d78482aa","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"a967bfe3ad4e62243eb604bf956101e4c740f5921277c60debaf325c1320bf88","impliedFormat":1},{"version":"e9775e97ac4877aebf963a0289c81abe76d1ec9a2a7778dbe637e5151f25c5f3","impliedFormat":1},{"version":"471e1da5a78350bc55ef8cef24eb3aca6174143c281b8b214ca2beda51f5e04a","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"db3435f3525cd785bf21ec6769bf8da7e8a776be1a99e2e7efb5f244a2ef5fee","impliedFormat":1},{"version":"c3b170c45fc031db31f782e612adf7314b167e60439d304b49e704010e7bafe5","impliedFormat":1},{"version":"40383ebef22b943d503c6ce2cb2e060282936b952a01bea5f9f493d5fb487cc7","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"3a84b7cb891141824bd00ef8a50b6a44596aded4075da937f180c90e362fe5f6","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"33203609eba548914dc83ddf6cadbc0bcb6e8ef89f6d648ca0908ae887f9fcc5","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"9f0a92164925aa37d4a5d9dd3e0134cff8177208dba55fd2310cd74beea40ee2","impliedFormat":1},{"version":"8bfdb79bf1a9d435ec48d9372dc93291161f152c0865b81fc0b2694aedb4578d","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"d32275be3546f252e3ad33976caf8c5e842c09cb87d468cb40d5f4cf092d1acc","impliedFormat":1},{"version":"4a0c3504813a3289f7fb1115db13967c8e004aa8e4f8a9021b95285502221bd1","impliedFormat":1},{"version":"4d719cfab49ae4045d15cb6bed0f38ad3d7d6eb7f277d2603502a0f862ca3182","affectsGlobalScope":true,"impliedFormat":1},{"version":"cce1f5f86974c1e916ec4a8cab6eec9aa8e31e8148845bf07fbaa8e1d97b1a2c","impliedFormat":1},{"version":"5a856afb15f9dc9983faa391dde989826995a33983c1cccb173e9606688e9709","affectsGlobalScope":true,"impliedFormat":1},{"version":"546ab07e19116d935ad982e76a223275b53bff7771dab94f433b7ab04652936e","impliedFormat":1},{"version":"7b43160a49cf2c6082da0465876c4a0b164e160b81187caeb0a6ca7a281e85ba","impliedFormat":1},{"version":"aefb5a4a209f756b580eb53ea771cca8aad411603926f307a5e5b8ec6b16dcf6","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"f5a8b7ec4b798c88679194a8ebc25dcb6f5368e6e5811fcda9fe12b0d445b8db","impliedFormat":1},{"version":"b86e1a45b29437f3a99bad4147cb9fe2357617e8008c0484568e5bb5138d6e13","impliedFormat":1},{"version":"b5b719a47968cd61a6f83f437236bb6fe22a39223b6620da81ef89f5d7a78fb7","impliedFormat":1},{"version":"42c431e7965b641106b5e25ab3283aa4865ca7bb9909610a2abfa6226e4348be","impliedFormat":1},{"version":"0b7e732af0a9599be28c091d6bd1cb22c856ec0d415d4749c087c3881ca07a56","impliedFormat":1},{"version":"b7fe70be794e13d1b7940e318b8770cd1fb3eced7707805318a2e3aaac2c3e9e","impliedFormat":1},{"version":"2c71199d1fc83bf17636ad5bf63a945633406b7b94887612bba4ef027c662b3e","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d6138a264ddc6f94f16e99d4e117a2d6eb31b217891cf091b6437a2f114d561","affectsGlobalScope":true,"impliedFormat":1},{"version":"3b4c85eea12187de9929a76792b98406e8778ce575caca8c574f06da82622c54","impliedFormat":1},{"version":"f788131a39c81e0c9b9e463645dd7132b5bc1beb609b0e31e5c1ceaea378b4df","impliedFormat":1},{"version":"0c236069ce7bded4f6774946e928e4b3601894d294054af47a553f7abcafe2c1","impliedFormat":1},{"version":"21894466693f64957b9bd4c80fa3ec7fdfd4efa9d1861e070aca23f10220c9b2","impliedFormat":1},{"version":"396a8939b5e177542bdf9b5262b4eee85d29851b2d57681fa9d7eae30e225830","impliedFormat":1},{"version":"21773f5ac69ddf5a05636ba1f50b5239f4f2d27e4420db147fc2f76a5ae598ac","impliedFormat":1},{"version":"6ec93c745c5e3e25e278fa35451bf18ef857f733de7e57c15e7920ac463baa2a","affectsGlobalScope":true,"impliedFormat":1},{"version":"a5fe4cc622c3bf8e09ababde5f4096ceac53163eefcd95e9cd53f062ff9bb67a","impliedFormat":1},{"version":"30c2ec6abf6aaa60eb4f32fb1235531506b7961c6d1bdc7430711aec8fd85295","impliedFormat":1},{"version":"0f05c06ff6196958d76b865ae17245b52d8fe01773626ac3c43214a2458ea7b7","impliedFormat":1},{"version":"308b84e1943ef30015469770e931eb21b795348893b2a6562ca54ea8f0b3c41c","affectsGlobalScope":true,"impliedFormat":1},{"version":"d48009cbe8a30a504031cc82e1286f78fed33b7a42abf7602c23b5547b382563","affectsGlobalScope":true,"impliedFormat":1},{"version":"7aaeb5e62f90e1b2be0fc4844df78cdb1be15c22b427bc6c39d57308785b8f10","impliedFormat":1},{"version":"3ba30205a029ebc0c91d7b1ab4da73f6277d730ca1fc6692d5a9144c6772c76b","impliedFormat":1},{"version":"d8dba11dc34d50cb4202de5effa9a1b296d7a2f4a029eec871f894bddfb6430d","impliedFormat":1},{"version":"8b71dd18e7e63b6f991b511a201fad7c3bf8d1e0dd98acb5e3d844f335a73634","impliedFormat":1},{"version":"01d8e1419c84affad359cc240b2b551fb9812b450b4d3d456b64cda8102d4f60","impliedFormat":1},{"version":"458b216959c231df388a5de9dcbcafd4b4ca563bc3784d706d0455467d7d4942","impliedFormat":1},{"version":"269929a24b2816343a178008ac9ae9248304d92a8ba8e233055e0ed6dbe6ef71","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"f8c87b19eae111f8720b0345ab301af8d81add39621b63614dfc2d15fd6f140a","impliedFormat":1},{"version":"831c22d257717bf2cbb03afe9c4bcffc5ccb8a2074344d4238bf16d3a857bb12","impliedFormat":1},{"version":"24ba151e213906027e2b1f5223d33575a3612b0234a0e2b56119520bbe0e594b","affectsGlobalScope":true,"impliedFormat":1},{"version":"cbf046714f3a3ba2544957e1973ac94aa819fa8aa668846fa8de47eb1c41b0b2","affectsGlobalScope":true,"impliedFormat":1},{"version":"aa34c3aa493d1c699601027c441b9664547c3024f9dbab1639df7701d63d18fa","impliedFormat":1},{"version":"eae74e3d50820f37c72c0679fed959cd1e63c98f6a146a55b8c4361582fa6a52","impliedFormat":1},{"version":"7c651f8dce91a927ab62925e73f190763574c46098f2b11fb8ddc1b147a6709a","impliedFormat":1},{"version":"7440ab60f4cb031812940cc38166b8bb6fbf2540cfe599f87c41c08011f0c1df","impliedFormat":1},{"version":"aed89e3c18f4c659ee8153a76560dffda23e2d801e1e60d7a67abd84bc555f8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ed13c80faeb2b7160bffb4926ff299c468e67a37a645b3ae0917ba0db633c1b","affectsGlobalScope":true,"impliedFormat":1},{"version":"e393915d3dc385e69c0e2390739c87b2d296a610662eb0b1cb85224e55992250","impliedFormat":1},{"version":"2f940651c2f30e6b29f8743fae3f40b7b1c03615184f837132b56ea75edad08b","impliedFormat":1},{"version":"5749c327c3f789f658072f8340786966c8b05ea124a56c1d8d60e04649495a4d","impliedFormat":1},{"version":"c9d62b2a51b2ff166314d8be84f6881a7fcbccd37612442cf1c70d27d5352f50","affectsGlobalScope":true,"impliedFormat":1},{"version":"e7dbf5716d76846c7522e910896c5747b6df1abd538fee8f5291bdc843461795","impliedFormat":1},{"version":"ab9b9a36e5284fd8d3bf2f7d5fcbc60052f25f27e4d20954782099282c60d23e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b510d0a18e3db42ac9765d26711083ec1e8b4e21caaca6dc4d25ae6e8623f447","impliedFormat":1},{"version":"a39db87a3a3aa954ac3f6553b9fbfc642eb22bef7586cc1f0559e676aa073fa8","impliedFormat":1},{"version":"6000f350e1ff2ffcb895ac216cbf1e33c309424feb09227685558b3c3a16e960","impliedFormat":1},{"version":"42b4502b58a2f590858ad6f7a9e7eaca58c8d6e8881dead672f3589cfd360002","impliedFormat":1},{"version":"60a00e948199a2aceec07044df812d80c067459c2b6a1dea1424088d78b5318d","impliedFormat":1},{"version":"60eaf380e7bfed4e2801eca9062b16e5462003986f8c6c19cc671169fce33af6","impliedFormat":1},{"version":"88a7ffd961d12eb978f62702ccea6aae206803c4222f059a2d2a8237a28682a6","signature":"05fa083f65a0e3a117e4c1a63155835825c73eb90b7f642d53111dff35fb68ec","impliedFormat":1},{"version":"1501609e517a632d22e61a7bf3e8c73cd801260baba54203435387c1fef9d9d6","affectsGlobalScope":true,"impliedFormat":1},{"version":"54db406753da16e177f094aa66da79840f447de6d87ddd1543a80c9418c52545","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"96d14f21b7652903852eef49379d04dbda28c16ed36468f8c9fa08f7c14c9538","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"cc0700b1b97e18a3d5d9184470502d8762ec85158819d662730c3a8c5d702584","impliedFormat":1},{"version":"9871b7ee672bc16c78833bdab3052615834b08375cb144e4d2cba74473f4a589","impliedFormat":1},{"version":"c863198dae89420f3c552b5a03da6ed6d0acfa3807a64772b895db624b0de707","impliedFormat":1},{"version":"8b03a5e327d7db67112ebbc93b4f744133eda2c1743dbb0a990c61a8007823ef","impliedFormat":1},{"version":"86c73f2ee1752bac8eeeece234fd05dfcf0637a4fbd8032e4f5f43102faa8eec","impliedFormat":1},{"version":"42fad1f540271e35ca37cecda12c4ce2eef27f0f5cf0f8dd761d723c744d3159","impliedFormat":1},{"version":"ff3743a5de32bee10906aff63d1de726f6a7fd6ee2da4b8229054dfa69de2c34","impliedFormat":1},{"version":"83acd370f7f84f203e71ebba33ba61b7f1291ca027d7f9a662c6307d74e4ac22","impliedFormat":1},{"version":"1445cec898f90bdd18b2949b9590b3c012f5b7e1804e6e329fb0fe053946d5ec","impliedFormat":1},{"version":"0e5318ec2275d8da858b541920d9306650ae6ac8012f0e872fe66eb50321a669","impliedFormat":1},{"version":"cf530297c3fb3a92ec9591dd4fa229d58b5981e45fe6702a0bd2bea53a5e59be","impliedFormat":1},{"version":"c1f6f7d08d42148ddfe164d36d7aba91f467dbcb3caa715966ff95f55048b3a4","impliedFormat":1},{"version":"f4e9bf9103191ef3b3612d3ec0044ca4044ca5be27711fe648ada06fad4bcc85","impliedFormat":1},{"version":"0c1ee27b8f6a00097c2d6d91a21ee4d096ab52c1e28350f6362542b55380059a","impliedFormat":1},{"version":"7677d5b0db9e020d3017720f853ba18f415219fb3a9597343b1b1012cfd699f7","impliedFormat":1},{"version":"bc1c6bc119c1784b1a2be6d9c47addec0d83ef0d52c8fbe1f14a51b4dfffc675","impliedFormat":1},{"version":"52cf2ce99c2a23de70225e252e9822a22b4e0adb82643ab0b710858810e00bf1","impliedFormat":1},{"version":"770625067bb27a20b9826255a8d47b6b5b0a2d3dfcbd21f89904c731f671ba77","impliedFormat":1},{"version":"d1ed6765f4d7906a05968fb5cd6d1db8afa14dbe512a4884e8ea5c0f5e142c80","impliedFormat":1},{"version":"799c0f1b07c092626cf1efd71d459997635911bb5f7fc1196efe449bba87e965","impliedFormat":1},{"version":"2a184e4462b9914a30b1b5c41cf80c6d3428f17b20d3afb711fff3f0644001fd","impliedFormat":1},{"version":"9eabde32a3aa5d80de34af2c2206cdc3ee094c6504a8d0c2d6d20c7c179503cc","impliedFormat":1},{"version":"397c8051b6cfcb48aa22656f0faca2553c5f56187262135162ee79d2b2f6c966","impliedFormat":1},{"version":"a8ead142e0c87dcd5dc130eba1f8eeed506b08952d905c47621dc2f583b1bff9","impliedFormat":1},{"version":"a02f10ea5f73130efca046429254a4e3c06b5475baecc8f7b99a0014731be8b3","impliedFormat":1},{"version":"f77ff4cd234d3fd18ddd5aeadb6f94374511931976d41f4b9f594cb71f7ce6f3","impliedFormat":1},{"version":"4c9a0564bb317349de6a24eb4efea8bb79898fa72ad63a1809165f5bd42970dd","impliedFormat":1},{"version":"4f18b4e6081e5e980ef53ddf57b9c959d36cffe1eb153865f512a01aeffb5e1e","impliedFormat":1},{"version":"7f17d4846a88eca5fe71c4474ef687ee89c4acf9b5372ab9b2ee68644b7e0fe0","impliedFormat":1},{"version":"b444a410d34fb5e98aa5ee2b381362044f4884652e8bc8a11c8fe14bbd85518e","impliedFormat":1},{"version":"c35808c1f5e16d2c571aa65067e3cb95afeff843b259ecfa2fc107a9519b5392","impliedFormat":1},{"version":"14d5dc055143e941c8743c6a21fa459f961cbc3deedf1bfe47b11587ca4b3ef5","impliedFormat":1},{"version":"a3ad4e1fc542751005267d50a6298e6765928c0c3a8dce1572f2ba6ca518661c","impliedFormat":1},{"version":"f237e7c97a3a89f4591afd49ecb3bd8d14f51a1c4adc8fcae3430febedff5eb6","impliedFormat":1},{"version":"3ffdfbec93b7aed71082af62b8c3e0cc71261cc68d796665faa1e91604fbae8f","impliedFormat":1},{"version":"662201f943ed45b1ad600d03a90dffe20841e725203ced8b708c91fcd7f9379a","impliedFormat":1},{"version":"c9ef74c64ed051ea5b958621e7fb853fe3b56e8787c1587aefc6ea988b3c7e79","impliedFormat":1},{"version":"2462ccfac5f3375794b861abaa81da380f1bbd9401de59ffa43119a0b644253d","impliedFormat":1},{"version":"34baf65cfee92f110d6653322e2120c2d368ee64b3c7981dff08ed105c4f19b0","impliedFormat":1},{"version":"85f8ebd7f245e8bf29da270e8b53dcdd17528826ffd27176c5fc7e426213ef5a","impliedFormat":1}],"root":[150],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"esModuleInterop":true,"experimentalDecorators":true,"module":199,"outDir":"./","sourceMap":true,"strict":true,"target":9},"fileIdsList":[[137,151],[137],[59,137],[94,137],[95,100,128,137],[96,107,108,115,125,136,137],[96,97,107,115,137],[98,137],[99,100,108,116,137],[100,125,133,137],[101,103,107,115,137],[102,137],[103,104,137],[107,137],[105,107,137],[94,107,137],[107,108,109,125,136,137],[107,108,109,122,125,128,137],[92,137,141],[103,107,110,115,125,136,137],[107,108,110,111,115,125,133,136,137],[110,112,125,133,136,137],[59,60,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143],[107,113,137],[114,136,137,141],[103,107,115,125,137],[116,137],[117,137],[94,118,137],[119,135,137,141],[120,137],[121,137],[107,122,123,137],[122,124,137,139],[95,107,125,126,127,128,137],[95,125,127,137],[125,126,137],[128,137],[129,137],[94,125,137],[107,131,132,137],[131,132,137],[100,115,125,133,137],[134,137],[115,135,137],[95,110,121,136,137],[100,137],[125,137,138],[114,137,139],[137,140],[95,100,107,109,118,125,136,137,139,141],[125,137,142],[137,156,195],[137,156,180,195],[137,195],[137,156],[137,156,181,195],[137,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194],[137,181,195],[137,145,146,147],[137,145,146],[137,145,146,147,148],[137,145,147],[107,137,144],[69,73,136,137],[69,125,136,137],[64,137],[66,69,133,136,137],[115,133,137],[137,144],[64,137,144],[66,69,115,136,137],[61,62,65,68,95,107,125,136,137],[61,67,137],[65,69,95,128,136,137,144],[95,137,144],[85,95,137,144],[63,64,137,144],[69,137],[63,64,65,66,67,68,69,70,71,73,74,75,76,77,78,79,80,81,82,83,84,86,87,88,89,90,91,137],[69,76,77,137],[67,69,77,78,137],[68,137],[61,64,69,137],[69,73,77,78,137],[73,137],[67,69,72,136,137],[61,66,67,69,73,76,137],[95,125,137],[64,69,85,95,137,141,144],[117,137,145,149],[149]],"referencedMap":[[152,1],[151,2],[153,2],[154,2],[59,3],[60,3],[94,4],[95,5],[96,6],[97,7],[98,8],[99,9],[100,10],[101,11],[102,12],[103,13],[104,13],[106,14],[105,15],[107,16],[108,17],[109,18],[93,19],[143,2],[110,20],[111,21],[112,22],[144,23],[113,24],[114,25],[115,26],[116,27],[117,28],[118,29],[119,30],[120,31],[121,32],[122,33],[123,33],[124,34],[125,35],[127,36],[126,37],[128,38],[129,39],[130,40],[131,41],[132,42],[133,43],[134,44],[135,45],[136,46],[137,47],[138,48],[139,49],[140,50],[141,51],[142,52],[155,2],[180,53],[181,54],[156,55],[159,55],[178,53],[179,53],[169,53],[168,56],[166,53],[161,53],[174,53],[172,53],[176,53],[160,53],[173,53],[177,53],[162,53],[163,53],[175,53],[157,53],[164,53],[165,53],[167,53],[171,53],[182,57],[170,53],[158,53],[195,58],[194,2],[189,57],[191,59],[190,57],[183,57],[184,57],[186,57],[188,57],[192,59],[193,59],[185,59],[187,59],[148,60],[147,61],[149,62],[146,63],[145,64],[57,2],[58,2],[10,2],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[21,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[8,2],[48,2],[45,2],[46,2],[47,2],[49,2],[9,2],[50,2],[51,2],[52,2],[55,2],[53,2],[54,2],[1,2],[56,2],[76,65],[83,66],[75,65],[90,67],[67,68],[66,69],[89,70],[84,71],[87,72],[69,73],[68,74],[64,75],[63,76],[86,77],[65,78],[70,79],[71,2],[74,79],[61,2],[92,80],[91,79],[78,81],[79,82],[81,83],[77,84],[80,85],[85,70],[72,86],[73,87],[82,88],[62,89],[88,90],[150,91]],"exportedModulesMap":[[152,1],[151,2],[153,2],[154,2],[59,3],[60,3],[94,4],[95,5],[96,6],[97,7],[98,8],[99,9],[100,10],[101,11],[102,12],[103,13],[104,13],[106,14],[105,15],[107,16],[108,17],[109,18],[93,19],[143,2],[110,20],[111,21],[112,22],[144,23],[113,24],[114,25],[115,26],[116,27],[117,28],[118,29],[119,30],[120,31],[121,32],[122,33],[123,33],[124,34],[125,35],[127,36],[126,37],[128,38],[129,39],[130,40],[131,41],[132,42],[133,43],[134,44],[135,45],[136,46],[137,47],[138,48],[139,49],[140,50],[141,51],[142,52],[155,2],[180,53],[181,54],[156,55],[159,55],[178,53],[179,53],[169,53],[168,56],[166,53],[161,53],[174,53],[172,53],[176,53],[160,53],[173,53],[177,53],[162,53],[163,53],[175,53],[157,53],[164,53],[165,53],[167,53],[171,53],[182,57],[170,53],[158,53],[195,58],[194,2],[189,57],[191,59],[190,57],[183,57],[184,57],[186,57],[188,57],[192,59],[193,59],[185,59],[187,59],[148,60],[147,61],[149,62],[146,63],[145,64],[57,2],[58,2],[10,2],[12,2],[11,2],[2,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[3,2],[4,2],[21,2],[25,2],[22,2],[23,2],[24,2],[26,2],[27,2],[28,2],[5,2],[29,2],[30,2],[31,2],[32,2],[6,2],[36,2],[33,2],[34,2],[35,2],[37,2],[7,2],[38,2],[43,2],[44,2],[39,2],[40,2],[41,2],[42,2],[8,2],[48,2],[45,2],[46,2],[47,2],[49,2],[9,2],[50,2],[51,2],[52,2],[55,2],[53,2],[54,2],[1,2],[56,2],[76,65],[83,66],[75,65],[90,67],[67,68],[66,69],[89,70],[84,71],[87,72],[69,73],[68,74],[64,75],[63,76],[86,77],[65,78],[70,79],[71,2],[74,79],[61,2],[92,80],[91,79],[78,81],[79,82],[81,83],[77,84],[80,85],[85,70],[72,86],[73,87],[82,88],[62,89],[88,90],[150,92]],"semanticDiagnosticsPerFile":[152,151,153,154,59,60,94,95,96,97,98,99,100,101,102,103,104,106,105,107,108,109,93,143,110,111,112,144,113,114,115,116,117,118,119,120,121,122,123,124,125,127,126,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,155,180,181,156,159,178,179,169,168,166,161,174,172,176,160,173,177,162,163,175,157,164,165,167,171,182,170,158,195,194,189,191,190,183,184,186,188,192,193,185,187,148,147,149,146,145,57,58,10,12,11,2,13,14,15,16,17,18,19,20,3,4,21,25,22,23,24,26,27,28,5,29,30,31,32,6,36,33,34,35,37,7,38,43,44,39,40,41,42,8,48,45,46,47,49,9,50,51,52,55,53,54,1,56,76,83,75,90,67,66,89,84,87,69,68,64,63,86,65,70,71,74,61,92,91,78,79,81,77,80,85,72,73,82,62,88,150]},"version":"5.2.2"}
|
package/package.json
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@sesamecare-oss/us-postal-codes",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Lookup city, state and geolocation by US postal codes. Includes infra for fetching the latest values.",
|
|
5
|
+
"main": "build/index.js",
|
|
6
|
+
"types": "build/index.d.ts",
|
|
7
|
+
"author": "Developers <developers@sesamecare.com>",
|
|
8
|
+
"license": "UNLICENSED",
|
|
9
|
+
"packageManager": "yarn@3.6.0",
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc -p tsconfig.build.json",
|
|
12
|
+
"clean": "yarn dlx rimraf ./dist",
|
|
13
|
+
"lint": "eslint .",
|
|
14
|
+
"_postinstall": "coconfig",
|
|
15
|
+
"test": "vitest"
|
|
16
|
+
},
|
|
17
|
+
"keywords": [
|
|
18
|
+
"typescript",
|
|
19
|
+
"sesame"
|
|
20
|
+
],
|
|
21
|
+
"repository": {
|
|
22
|
+
"type": "git",
|
|
23
|
+
"url": "git+https://github.com/sesamecare/us-postal-codes.git"
|
|
24
|
+
},
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"release": {
|
|
29
|
+
"branches": [
|
|
30
|
+
"main"
|
|
31
|
+
],
|
|
32
|
+
"plugins": [
|
|
33
|
+
"@semantic-release/commit-analyzer",
|
|
34
|
+
"@semantic-release/release-notes-generator",
|
|
35
|
+
[
|
|
36
|
+
"@semantic-release/exec",
|
|
37
|
+
{
|
|
38
|
+
"publishCmd": "yarn dlx pinst --disable"
|
|
39
|
+
}
|
|
40
|
+
],
|
|
41
|
+
"@semantic-release/npm",
|
|
42
|
+
"@semantic-release/github"
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
"config": {
|
|
46
|
+
"coconfig": "@openapi-typescript-infra/coconfig"
|
|
47
|
+
},
|
|
48
|
+
"devDependencies": {
|
|
49
|
+
"@openapi-typescript-infra/coconfig": "^4.2.2",
|
|
50
|
+
"@semantic-release/exec": "^6.0.3",
|
|
51
|
+
"@semantic-release/github": "^9.2.3",
|
|
52
|
+
"@types/node": "^20.9.0",
|
|
53
|
+
"@typescript-eslint/eslint-plugin": "^6.11.0",
|
|
54
|
+
"@typescript-eslint/parser": "^6.11.0",
|
|
55
|
+
"coconfig": "^1.0.0",
|
|
56
|
+
"eslint": "^8.53.0",
|
|
57
|
+
"eslint-config-prettier": "^9.0.0",
|
|
58
|
+
"eslint-import-resolver-typescript": "^3.6.1",
|
|
59
|
+
"eslint-plugin-import": "^2.29.0",
|
|
60
|
+
"typescript": "^5.2.2",
|
|
61
|
+
"vitest": "^0.34.6"
|
|
62
|
+
},
|
|
63
|
+
"dependencies": {
|
|
64
|
+
"sqlite": "^5.1.1",
|
|
65
|
+
"sqlite3": "^5.1.6"
|
|
66
|
+
}
|
|
67
|
+
}
|
package/src/index.ts
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
|
|
3
|
+
import { Database as DatabaseDriver } from 'sqlite3';
|
|
4
|
+
import type { Database } from 'sqlite';
|
|
5
|
+
import { open } from 'sqlite';
|
|
6
|
+
|
|
7
|
+
export class USPostalCodes {
|
|
8
|
+
db: Database | undefined;
|
|
9
|
+
|
|
10
|
+
async open() {
|
|
11
|
+
this.db = await open({
|
|
12
|
+
filename: path.join(__dirname, '../assets/uspostalcodes.db'),
|
|
13
|
+
driver: DatabaseDriver,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
async lookup(zipCode: string): Promise<
|
|
18
|
+
{
|
|
19
|
+
city: string;
|
|
20
|
+
state: string;
|
|
21
|
+
lat: number;
|
|
22
|
+
lng: number;
|
|
23
|
+
}[]
|
|
24
|
+
> {
|
|
25
|
+
if (!this.db) {
|
|
26
|
+
throw new Error('Postal code database unavailable');
|
|
27
|
+
}
|
|
28
|
+
return this.db.all('SELECT city, state, lat, lng FROM locations WHERE postal_code = ?', zipCode);
|
|
29
|
+
}
|
|
30
|
+
}
|
package/tsconfig.json
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
{
|
|
2
|
+
"include": [
|
|
3
|
+
"@types/**/*",
|
|
4
|
+
"src/**/*",
|
|
5
|
+
"__tests__/**/*",
|
|
6
|
+
"__mocks__/**/*",
|
|
7
|
+
"coconfig.ts",
|
|
8
|
+
"vitest.config.ts"
|
|
9
|
+
],
|
|
10
|
+
"exclude": [
|
|
11
|
+
"node_modules",
|
|
12
|
+
"build"
|
|
13
|
+
],
|
|
14
|
+
"ts-node": {
|
|
15
|
+
"transpileOnly": true,
|
|
16
|
+
"files": true
|
|
17
|
+
},
|
|
18
|
+
"compilerOptions": {
|
|
19
|
+
"lib": [
|
|
20
|
+
"ES2022",
|
|
21
|
+
"DOM"
|
|
22
|
+
],
|
|
23
|
+
"module": "NodeNext",
|
|
24
|
+
"moduleResolution": "NodeNext",
|
|
25
|
+
"target": "ES2022",
|
|
26
|
+
"declaration": true,
|
|
27
|
+
"sourceMap": true,
|
|
28
|
+
"outDir": "./build",
|
|
29
|
+
"incremental": true,
|
|
30
|
+
"isolatedModules": true,
|
|
31
|
+
"strict": true,
|
|
32
|
+
"baseUrl": "./src",
|
|
33
|
+
"allowSyntheticDefaultImports": true,
|
|
34
|
+
"esModuleInterop": true,
|
|
35
|
+
"experimentalDecorators": true,
|
|
36
|
+
"paths": {
|
|
37
|
+
"@/*": [
|
|
38
|
+
"./*"
|
|
39
|
+
]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
package/vitest.config.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file is generated by coconfig. Do not edit it directly.
|
|
3
|
+
* Instead, edit the coconfig.js or coconfig.ts file in your project root.
|
|
4
|
+
*
|
|
5
|
+
* See https://github.com/gas-buddy/coconfig for more information.
|
|
6
|
+
* @version coconfig@1.0.0
|
|
7
|
+
*/
|
|
8
|
+
import cjs from '@openapi-typescript-infra/coconfig';
|
|
9
|
+
import * as esmToCjs from '@openapi-typescript-infra/coconfig';
|
|
10
|
+
|
|
11
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
12
|
+
const configModule: any = cjs || esmToCjs;
|
|
13
|
+
|
|
14
|
+
const configItem = configModule.default || configModule.config || configModule;
|
|
15
|
+
const { configuration } = configItem && configItem['vitest.config.ts'];
|
|
16
|
+
const resolved = typeof configuration === 'function' ? configuration() : configuration;
|
|
17
|
+
|
|
18
|
+
// eslint-disable-next-line import/no-default-export
|
|
19
|
+
export default resolved;
|