
Research
/Security News
Weaponizing Discord for Command and Control Across npm, PyPI, and RubyGems.org
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
@pinelab/vendure-plugin-address-lookup
Advanced tools
Vendure plugin for searching, validating and autofilling address details in checkouts
This Vendure plugin allows you to lookup addresses based on postalcode, housenumber and/or streetname.
import { AddressLookupPlugin } from '@pinelab/vendure-plugin-address-lookup';
// In your vendure-config.ts
plugins: [
AddressLookupPlugin.init({
lookupStrategies: [
// You can register for the Post NL API to do NL and BE lookups
new PostNLLookupStrategy({
apiKey: process.env.POSTNL_APIKEY!,
}),
new GooglePlacesLookupStrategy({
supportedCountryCodes: ['DE'], // You can use the Google Places API for any country, but you need to register for an API key at https://developers.google.com/maps/documentation/places/web-service/get-api-key
apiKey: process.env.GOOGLE_PLACES_APIKEY!,
})
// If you want to use the free Postcode.tech, get an API key at https://postcode.tech/ and uncomment the lines below
// new PostcodeTechStrategy({
// apiKey: process.env.POSTCODE_TECH_APIKEY!,
// }),
],
}),
DefaultSearchPlugin,
AdminUiPlugin.init({
port: 3002,
route: 'admin',
}),
],
In your storefront, you can use the lookupAddress
mutation to look up an address.
You need an active order to be able to access this query!
# NL lookups with postal code and house number will always give 1 result
query {
lookupAddress(
input: { countryCode: "NL", postalCode: "8911 DM", houseNumber: "3" }
) {
streetLine1
streetLine2
postalCode
city
province
country
countryCode
}
}
# BE lookups with only a postal code and a house number will give multiple results
query {
lookupAddress(
input: { countryCode: "BE", postalCode: "9052", houseNumber: "110" }
) {
streetLine1
streetLine2
postalCode
city
country
countryCode
}
}
# To get a single result, you need to also pass streetname
query {
lookupAddress(
input: {
countryCode: "BE"
postalCode: "9052"
houseNumber: "110"
streetName: "Rijvisschepark"
}
) {
streetLine1
streetLine2
postalCode
city
country
countryCode
}
}
If you want to use the Google Places API, you can do so by registering the GooglePlacesLookupStrategy
in your config:
import { GooglePlacesLookupStrategy } from '@pinelab/vendure-plugin-address-lookup';
plugins: [
AddressLookupPlugin.init({
lookupStrategies: [
new GooglePlacesLookupStrategy({
supportedCountryCodes: ['DE'],
apiKey: process.env.GOOGLE_PLACES_APIKEY!,
}),
],
}),
],
The Google places API requires you to input the housenumber and streetname. It will mostly give you a single result, even when multiple results can exists. If that happens, you can pass the postalcode to get a specific result.
# This example will give you 1 result: the Parkstraße 4 in Osnabrück
{
lookupAddress(
input: { countryCode: "DE", streetName: "Parkstraße", houseNumber: "4" }
) {
streetLine1
streetLine2
city
province
postalCode
country
countryCode
}
}
# This example will give you another single result: the Parkstraße 4 in Löningen
{
lookupAddress(
input: {
countryCode: "DE"
streetName: "Parkstraße"
houseNumber: "4"
postalCode: "49624"
}
) {
streetLine1
streetLine2
city
province
postalCode
country
countryCode
}
}
If you want to implement your own strategy, for example to support more countries, or use different API's, you can do so by implementing the LookupStrategy
interface:
import { AddressLookupStrategy } from '@pinelab/vendure-plugin-address-lookup';
export class GermanPostcodeStrategy implements AddressLookupStrategy {
readonly supportedCountryCodes = ['DE'];
constructor(private readonly input: PostcodeTechStrategyInput) {}
validateInput?(input: AddressLookupInput): true | string {
// Optionally validate the input given by the client
}
async lookup(
ctx: RequestContext,
input: AddressLookupInput
): Promise<OrderAddress[]> {
// Fetch the address from your own API, and map the results to OrderAddress
}
}
FAQs
Vendure plugin for searching, validating and autofilling address details in checkouts
We found that @pinelab/vendure-plugin-address-lookup demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
/Security News
Socket researchers uncover how threat actors weaponize Discord across the npm, PyPI, and RubyGems ecosystems to exfiltrate sensitive data.
Security News
Socket now integrates with Bun 1.3’s Security Scanner API to block risky packages at install time and enforce your organization’s policies in local dev and CI.
Research
The Socket Threat Research Team is tracking weekly intrusions into the npm registry that follow a repeatable adversarial playbook used by North Korean state-sponsored actors.