From 9808170bb595e397a87f933392f77ff2a42b0b02 Mon Sep 17 00:00:00 2001 From: Aviv Ben Shahar Date: Sat, 8 Jun 2024 03:15:40 +0300 Subject: [PATCH] fix: migrate to `cjs` moduling system --- .fast-alfred.config.cjs | 2 -- package.json | 3 +-- src/main/clear-cache.ts | 2 +- src/main/contacts.ts | 20 ++++++++++---------- src/main/engage-contact.ts | 6 +++--- src/models/contact-payload.model.ts | 2 +- src/services/contacts.service.ts | 6 +++--- src/services/platform-url-builder.service.ts | 4 ++-- src/services/search.config.ts | 2 +- src/services/search.service.ts | 9 +++++---- 10 files changed, 27 insertions(+), 29 deletions(-) diff --git a/.fast-alfred.config.cjs b/.fast-alfred.config.cjs index b26f68a..a697181 100644 --- a/.fast-alfred.config.cjs +++ b/.fast-alfred.config.cjs @@ -29,8 +29,6 @@ module.exports = { assets: ['./src/assets/contacts.node'], assetsDir: 'Release', targetDir: 'build', - outputFormat: 'esm', - esmHelpers: true, }, workflowMetadata: { name: 'Engage Contact', diff --git a/package.json b/package.json index 1720d40..c87af3f 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,6 @@ "email": "avivbens87@gmail.com" } ], - "type": "module", "main": "dist/index.js", "scripts": { "prebuild": "rm -rf ./dist", @@ -84,4 +83,4 @@ "publishConfig": { "registry": "https://registry.npmjs.org/" } -} \ No newline at end of file +} diff --git a/src/main/clear-cache.ts b/src/main/clear-cache.ts index 262caea..f16fc20 100644 --- a/src/main/clear-cache.ts +++ b/src/main/clear-cache.ts @@ -1,5 +1,5 @@ import { FastAlfred } from 'fast-alfred' -import { CACHE_CONTACTS_KEY } from '@common/constants.js' +import { CACHE_CONTACTS_KEY } from '@common/constants' ;(() => { const alfredClient = new FastAlfred() diff --git a/src/main/contacts.ts b/src/main/contacts.ts index 09ec136..c9cd24e 100644 --- a/src/main/contacts.ts +++ b/src/main/contacts.ts @@ -1,15 +1,15 @@ import type { AlfredScriptFilter } from 'fast-alfred' import { FastAlfred } from 'fast-alfred' import type { CountryCode } from 'libphonenumber-js' -import { DEFAULT_MAX_RESULTS_COUNT } from '@common/constants.js' -import { Variables } from '@common/variables.js' -import type { ContactPayload } from '@models/contact-payload.model.js' -import type { IContact } from '@models/contact.model.js' -import { SUPPORTED_PLATFORMS, type SupportedPlatform } from '@models/platform.model.js' -import { getContacts } from '@services/contacts.service.js' -import { searchContacts } from '@services/search.service.js' - -;(() => { +import { DEFAULT_MAX_RESULTS_COUNT } from '@common/constants' +import { Variables } from '@common/variables' +import type { ContactPayload } from '@models/contact-payload.model' +import type { IContact } from '@models/contact.model' +import { SUPPORTED_PLATFORMS, type SupportedPlatform } from '@models/platform.model' +import { getContacts } from '@services/contacts.service' +import { searchContacts } from '@services/search.service' + +;(async () => { const alfredClient = new FastAlfred() const [searchTerm, platform] = alfredClient.inputs @@ -33,7 +33,7 @@ import { searchContacts } from '@services/search.service.js' const contacts: IContact[] = getContacts(alfredClient) - const filteredContacts = searchContacts(contacts, searchTerm, sliceAmount) + const filteredContacts = await searchContacts(contacts, searchTerm, sliceAmount) const items: AlfredScriptFilter['items'] = filteredContacts .map(({ firstName, lastName, phoneNumbers, emailAddresses }: IContact) => { diff --git a/src/main/engage-contact.ts b/src/main/engage-contact.ts index 5709a9e..23a1d48 100644 --- a/src/main/engage-contact.ts +++ b/src/main/engage-contact.ts @@ -1,9 +1,9 @@ import { FastAlfred } from 'fast-alfred' import type { PhoneNumber } from 'libphonenumber-js' import { parsePhoneNumber } from 'libphonenumber-js' -import { execPromise } from '@common/utils.js' -import type { ContactPayload } from '@models/contact-payload.model.js' -import { buildOpenUrl } from '@services/platform-url-builder.service.js' +import { execPromise } from '@common/utils' +import type { ContactPayload } from '@models/contact-payload.model' +import { buildOpenUrl } from '@services/platform-url-builder.service' ;(async () => { const alfredClient = new FastAlfred() diff --git a/src/models/contact-payload.model.ts b/src/models/contact-payload.model.ts index bcfeea1..a827de4 100644 --- a/src/models/contact-payload.model.ts +++ b/src/models/contact-payload.model.ts @@ -1,5 +1,5 @@ import type { CountryCode } from 'libphonenumber-js' -import type { SupportedPlatform } from './platform.model.js' +import type { SupportedPlatform } from './platform.model' export interface ContactPayload { phoneNumber: string diff --git a/src/services/contacts.service.ts b/src/services/contacts.service.ts index bcefac5..4761c68 100644 --- a/src/services/contacts.service.ts +++ b/src/services/contacts.service.ts @@ -2,9 +2,9 @@ import type { FastAlfred } from 'fast-alfred' // eslint-disable-next-line @typescript-eslint/ban-ts-comment // @ts-expect-error import contacts from 'node-mac-contacts' -import { CACHE_CONTACTS_KEY, CACHE_TTL } from '@common/constants.js' -import { AuthStatus } from '@models/auth-status.enum.js' -import type { IContact } from '@models/contact.model.js' +import { CACHE_CONTACTS_KEY, CACHE_TTL } from '@common/constants' +import { AuthStatus } from '@models/auth-status.enum' +import type { IContact } from '@models/contact.model' export function isAuth(): boolean { const status: AuthStatus = contacts.getAuthStatus() diff --git a/src/services/platform-url-builder.service.ts b/src/services/platform-url-builder.service.ts index e2aa6ce..a9c7851 100644 --- a/src/services/platform-url-builder.service.ts +++ b/src/services/platform-url-builder.service.ts @@ -1,5 +1,5 @@ -import type { ContactPayload } from '@models/contact-payload.model.js' -import type { SupportedPlatform } from '@models/platform.model.js' +import type { ContactPayload } from '@models/contact-payload.model' +import type { SupportedPlatform } from '@models/platform.model' const PLATFORMS_URLS: Record string> = { whatsapp: (referrer: string) => `whatsapp://send?phone=${referrer}`, diff --git a/src/services/search.config.ts b/src/services/search.config.ts index bc31e69..cdb073d 100644 --- a/src/services/search.config.ts +++ b/src/services/search.config.ts @@ -1,4 +1,4 @@ -import type { IContact } from '@models/contact.model.js' +import type { IContact } from '@models/contact.model' type SearchField = keyof IContact export const SEARCH_FIELDS_CONFIG: SearchField[] = ['firstName', 'lastName', 'phoneNumbers', 'emailAddresses'] diff --git a/src/services/search.service.ts b/src/services/search.service.ts index 2c0cc58..7159421 100644 --- a/src/services/search.service.ts +++ b/src/services/search.service.ts @@ -1,8 +1,9 @@ -import Fuse from 'fuse.js' -import type { IContact } from '@models/contact.model.js' -import { SEARCH_FIELDS_CONFIG } from './search.config.js' +import type { IContact } from '@models/contact.model' +import { SEARCH_FIELDS_CONFIG } from './search.config' + +export async function searchContacts(contacts: IContact[], searchTerm: string, limit: number): Promise { + const Fuse = (await import('fuse.js/min-basic')).default -export function searchContacts(contacts: IContact[], searchTerm: string, limit: number): IContact[] { const fuse = new Fuse(contacts, { keys: SEARCH_FIELDS_CONFIG, isCaseSensitive: false,