Skip to content

Commit

Permalink
feat(shared): introduce autocomplete-shared package (#359)
Browse files Browse the repository at this point in the history
  • Loading branch information
francoischalifour authored Nov 5, 2020
1 parent 569ea44 commit af04ae1
Show file tree
Hide file tree
Showing 32 changed files with 93 additions and 98 deletions.
4 changes: 4 additions & 0 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ aliases:
command: |
set -exu
mkdir -p packages/autocomplete-shared/dist
mkdir -p packages/autocomplete-core/dist
mkdir -p packages/autocomplete-js/dist
mkdir -p packages/autocomplete-plugin-recent-searches/dist
mkdir -p packages/autocomplete-preset-algolia/dist
cp -R /tmp/workspace/packages/autocomplete-shared/dist packages/autocomplete-shared
cp -R /tmp/workspace/packages/autocomplete-core/dist packages/autocomplete-core
cp -R /tmp/workspace/packages/autocomplete-js/dist packages/autocomplete-js
cp -R /tmp/workspace/packages/autocomplete-plugin-recent-searches/dist packages/autocomplete-plugin-recent-searches
Expand Down Expand Up @@ -61,11 +63,13 @@ jobs:
command: |
set -exu
mkdir -p /tmp/workspace/packages/autocomplete-shared/dist
mkdir -p /tmp/workspace/packages/autocomplete-core/dist
mkdir -p /tmp/workspace/packages/autocomplete-js/dist
mkdir -p /tmp/workspace/packages/autocomplete-plugin-recent-searches/dist
mkdir -p /tmp/workspace/packages/autocomplete-preset-algolia/dist
cp -R packages/autocomplete-shared/dist /tmp/workspace/packages/autocomplete-shared
cp -R packages/autocomplete-core/dist /tmp/workspace/packages/autocomplete-core
cp -R packages/autocomplete-js/dist /tmp/workspace/packages/autocomplete-js
cp -R packages/autocomplete-plugin-recent-searches/dist /tmp/workspace/packages/autocomplete-plugin-recent-searches
Expand Down
31 changes: 0 additions & 31 deletions babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ module.exports = (api) => {
],
],
plugins: clean([
'@babel/plugin-transform-react-jsx',
!isTest && [
'inline-replace-variables',
{
Expand All @@ -34,36 +33,6 @@ module.exports = (api) => {
},
],
]),
overrides: [
{
test: 'packages/autocomplete-core',
plugins: clean([
!isTest && [
'inline-replace-variables',
{
__DEV__: {
type: 'node',
replacement: "process.env.NODE_ENV === 'development'",
},
},
],
]),
},
{
test: 'packages/autocomplete-preset-algolia',
plugins: clean([
!isTest && [
'inline-replace-variables',
{
__DEV__: {
type: 'node',
replacement: "process.env.NODE_ENV === 'development'",
},
},
],
]),
},
],
};
};

Expand Down
8 changes: 6 additions & 2 deletions bundlesize.config.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,17 @@
"path": "packages/autocomplete-core/dist/umd/index.js",
"maxSize": "4.5 kB"
},
{
"path": "packages/autocomplete-js/dist/umd/index.js",
"maxSize": "8 kB"
},
{
"path": "packages/autocomplete-preset-algolia/dist/umd/index.js",
"maxSize": "1.5 kB"
},
{
"path": "packages/autocomplete-js/dist/umd/index.js",
"maxSize": "8 kB"
"path": "packages/autocomplete-plugin-recent-searches/dist/umd/index.js",
"maxSize": "2.25 kB"
}
]
}
2 changes: 1 addition & 1 deletion lerna.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"packages": ["packages/*"],
"packages": ["packages/*", "examples/*"],
"version": "1.0.0-alpha.34",
"npmClient": "yarn"
}
1 change: 0 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
},
"devDependencies": {
"@babel/cli": "7.11.5",
"@babel/plugin-transform-react-jsx": "7.10.4",
"@babel/preset-env": "7.11.5",
"@babel/preset-typescript": "7.10.4",
"@rollup/plugin-json": "4.1.0",
Expand Down
1 change: 0 additions & 1 deletion packages/autocomplete-core/global.d.ts

This file was deleted.

3 changes: 3 additions & 0 deletions packages/autocomplete-core/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,5 +29,8 @@
"on:change": "concurrently \"yarn build:esm\" \"yarn build:types\"",
"prepare": "yarn build:esm && yarn build:types",
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
},
"dependencies": {
"@algolia/autocomplete-shared": "1.0.0-alpha.34"
}
}
3 changes: 2 additions & 1 deletion packages/autocomplete-core/src/types/api.ts
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
import { MaybePromise } from '@algolia/autocomplete-shared';

import { AutocompleteAccessibilityGetters } from './getters';
import { AutocompletePlugin } from './plugins';
import { AutocompleteSetters } from './setters';
import { AutocompleteState } from './state';
import { MaybePromise } from './wrappers';

export interface AutocompleteApi<
TItem,
Expand Down
5 changes: 3 additions & 2 deletions packages/autocomplete-js/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,9 @@
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
},
"dependencies": {
"@algolia/autocomplete-core": "^1.0.0-alpha.34",
"@algolia/autocomplete-preset-algolia": "^1.0.0-alpha.34"
"@algolia/autocomplete-core": "1.0.0-alpha.34",
"@algolia/autocomplete-preset-algolia": "1.0.0-alpha.34",
"@algolia/autocomplete-shared": "1.0.0-alpha.34"
},
"devDependencies": {
"@algolia/client-search": "4.5.1"
Expand Down
6 changes: 2 additions & 4 deletions packages/autocomplete-js/src/types/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import {
AutocompleteOptions as AutocompleteCoreOptions,
AutocompleteSource as AutocompleteCoreSource,
} from '@algolia/autocomplete-core';
import { MaybePromise } from '@algolia/autocomplete-shared';

type Template<TParams> = (params: TParams) => string | void;

Expand Down Expand Up @@ -49,12 +50,9 @@ export type InternalAutocompleteSource<TItem> = InternalAutocompleteCoreSource<
> &
SourceTemplates<TItem>;

// @TODO: reuse MaybePromise from autocomplete-core when we find a way to share the type
type GetSources<TItem> = (
params: GetSourcesParams<TItem>
) =>
| Array<AutocompleteCoreSource<TItem>>
| Promise<Array<AutocompleteCoreSource<TItem>>>;
) => MaybePromise<Array<AutocompleteCoreSource<TItem>>>;

export interface AutocompleteOptions<TItem>
extends AutocompleteCoreOptions<TItem> {
Expand Down
11 changes: 4 additions & 7 deletions packages/autocomplete-plugin-recent-searches/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,9 @@
"prepare": "yarn run build:esm",
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
},
"devDependencies": {
"@algolia/autocomplete-core": "^1.0.0-alpha.34",
"@algolia/autocomplete-js": "^1.0.0-alpha.34"
},
"peerDependencies": {
"@algolia/autocomplete-core": "^1.0.0-alpha.34",
"@algolia/autocomplete-js": "^1.0.0-alpha.34"
"dependencies": {
"@algolia/autocomplete-core": "1.0.0-alpha.34",
"@algolia/autocomplete-js": "1.0.0-alpha.34",
"@algolia/autocomplete-shared": "1.0.0-alpha.34"
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
import { AutocompletePlugin } from '@algolia/autocomplete-core';
import { SourceTemplates } from '@algolia/autocomplete-js';
import { MaybePromise, warn } from '@algolia/autocomplete-shared';

import { createStore, RecentSearchesStorage } from './createStore';
import {
getTemplates as defaultGetTemplates,
GetTemplatesParams,
} from './getTemplates';
import { MaybePromise, RecentSearchesItem } from './types';
import { RecentSearchesItem } from './types';

type Ref<TType> = {
current: TType;
Expand Down Expand Up @@ -91,9 +92,7 @@ export function createRecentSearchesPlugin<TItem extends RecentSearchesItem>({
// we cannot provide the facet filters in time when this function is called
// because we need to resolve the promise before getting the value.
if (!Array.isArray(lastItemsRef.current)) {
// @TODO: use the `warn` function from `autocomplete-core`
// eslint-disable-next-line no-console
console.warn(
warn(
'The `getAlgoliaQuerySuggestionsFacetFilters` function is not supported with storages that return promises in `getAll`.'
);
return [];
Expand All @@ -106,9 +105,7 @@ export function createRecentSearchesPlugin<TItem extends RecentSearchesItem>({
// we cannot provide the number of hits per page in time when this function
// is called because we need to resolve the promise before getting the value.
if (!Array.isArray(lastItemsRef.current)) {
// @TODO: use the `warn` function from `autocomplete-core`
// eslint-disable-next-line no-console
console.warn(
warn(
'The `getAlgoliaQuerySuggestionsHitsPerPage` function is not supported with storages that return promises in `getAll`.'
);
return hitsPerPage;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { MaybePromise } from './types';
import { MaybePromise } from '@algolia/autocomplete-shared';

import { RecentSearchesItem } from './types/RecentSearchesItem';

export type RecentSearchesStore<TItem extends RecentSearchesItem> = {
Expand Down

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,2 +1 @@
export * from './MaybePromise';
export * from './RecentSearchesItem';
1 change: 0 additions & 1 deletion packages/autocomplete-preset-algolia/global.d.ts

This file was deleted.

7 changes: 7 additions & 0 deletions packages/autocomplete-preset-algolia/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,14 @@
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
},
"dependencies": {
"@algolia/autocomplete-shared": "1.0.0-alpha.34"
},
"devDependencies": {
"@algolia/client-search": "4.5.1",
"algoliasearch": "4.5.1"
},
"peerDependencies": {
"@algolia/client-search": "^4.5.1",
"algoliasearch": "^4.5.1"
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { warnCache } from '../../utils';
import { warnCache } from '@algolia/autocomplete-shared';

import { parseAlgoliaHitHighlight } from '../parseAlgoliaHitHighlight';

describe('parseAlgoliaHitHighlight', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { warnCache } from '../../utils';
import { warnCache } from '@algolia/autocomplete-shared';

import { parseAlgoliaHitReverseHighlight } from '../parseAlgoliaHitReverseHighlight';

describe('parseAlgoliaHitReverseHighlight', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { warnCache } from '../../utils';
import { warnCache } from '@algolia/autocomplete-shared';

import { parseAlgoliaHitReverseSnippet } from '../parseAlgoliaHitReverseSnippet';

describe('parseAlgoliaHitReverseSnippet', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import { warnCache } from '../../utils';
import { warnCache } from '@algolia/autocomplete-shared';

import { parseAlgoliaHitSnippet } from '../parseAlgoliaHitSnippet';

describe('parseAlgoliaHitSnippet', () => {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { warn } from '@algolia/autocomplete-shared';
import { Hit } from '@algolia/client-search';

import { warn } from '../utils';

import { getAttributeValueByPath } from './getAttributeValueByPath';
import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';
import { parseAttribute } from './parseAttribute';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import { warn } from '@algolia/autocomplete-shared';
import { Hit } from '@algolia/client-search';

import { warn } from '../utils';

import { getAttributeValueByPath } from './getAttributeValueByPath';
import { ParseAlgoliaHitParams } from './ParseAlgoliaHitParams';
import { parseAttribute } from './parseAttribute';
Expand Down
1 change: 0 additions & 1 deletion packages/autocomplete-preset-algolia/src/utils/index.ts

This file was deleted.

29 changes: 29 additions & 0 deletions packages/autocomplete-shared/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
{
"name": "@algolia/autocomplete-shared",
"description": "Shared utils for Autocomplete packages.",
"version": "1.0.0-alpha.34",
"license": "MIT",
"homepage": "https://github.com/algolia/autocomplete.js",
"repository": "algolia/autocomplete.js",
"author": {
"name": "Algolia, Inc.",
"url": "https://www.algolia.com"
},
"source": "src/index.ts",
"types": "dist/esm/index.d.ts",
"module": "dist/esm/index.js",
"main": "dist/esm/index.js",
"sideEffects": false,
"files": [
"dist/"
],
"scripts": {
"build:clean": "rm -rf ./dist",
"build:esm": "babel src --root-mode upward --extensions '.ts,.tsx' --out-dir dist/esm --ignore '**/*/__tests__/'",
"build:types": "tsc -p ./tsconfig.declaration.json --outDir ./dist/esm",
"build": "yarn build:clean && yarn build:esm && yarn build:types",
"on:change": "concurrently \"yarn build:esm\" \"yarn build:types\"",
"prepare": "yarn build:esm && yarn build:types",
"watch": "watch \"yarn on:change\" --ignoreDirectoryPattern \"/dist/\""
}
}
2 changes: 2 additions & 0 deletions packages/autocomplete-shared/src/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
export * from './warn';
export * from './MaybePromise';
File renamed without changes.
3 changes: 3 additions & 0 deletions packages/autocomplete-shared/tsconfig.declaration.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"extends": "../../tsconfig.declaration"
}
24 changes: 9 additions & 15 deletions ship.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,18 @@ const fs = require('fs');
const path = require('path');

const packages = [
'packages/autocomplete-shared',
'packages/autocomplete-core',
'packages/autocomplete-preset-algolia',
'packages/autocomplete-js',
'packages/autocomplete-preset-algolia',
'packages/autocomplete-plugin-recent-searches',
];

module.exports = {
monorepo: {
mainVersionFile: 'lerna.json',
packagesToBump: packages,
// We rely on Lerna to bump our dependencies.
packagesToBump: [],
packagesToPublish: packages,
},
publishCommand({ tag }) {
Expand All @@ -26,19 +28,11 @@ module.exports = {

// Update package dependencies
exec(
`yarn workspace @algolia/autocomplete-js add "@algolia/autocomplete-core@^${version}" "@algolia/autocomplete-preset-algolia@^${version}"`
);
exec(
`yarn workspace @algolia/autocomplete-plugin-recent-searches add --peer "@algolia/autocomplete-core@^${version}" "@algolia/autocomplete-js@^${version}"`
);
exec(
`yarn workspace @algolia/autocomplete-plugin-recent-searches add --dev "@algolia/autocomplete-core@^${version}" "@algolia/autocomplete-js@^${version}"`
);
exec(
`yarn workspace @algolia/js-example add "@algolia/autocomplete-js@${version}" "@algolia/autocomplete-plugin-recent-searches@${version}"`
`yarn lerna version ${version} --exact --no-git-tag-version --no-push --yes`
);

updatePackagesVersion({
// Update version files
updatePackagesVersionFile({
version,
files: [
path.resolve(dir, 'packages', 'autocomplete-core', 'src', 'version.ts'),
Expand All @@ -53,7 +47,7 @@ module.exports = {
});
},
// Skip preparation if it contains only `chore` commits
shouldPrepare: ({ releaseType, commitNumbersPerType }) => {
shouldPrepare({ releaseType, commitNumbersPerType }) {
const { fix = 0 } = commitNumbersPerType;

if (releaseType === 'patch' && fix === 0) {
Expand All @@ -64,7 +58,7 @@ module.exports = {
},
};

function updatePackagesVersion({ version, files }) {
function updatePackagesVersionFile({ version, files }) {
for (const file of files) {
fs.writeFileSync(file, `export const version = '${version}';\n`);
}
Expand Down
Loading

0 comments on commit af04ae1

Please sign in to comment.