Skip to content

Commit 41dccc9

Browse files
authored
feat: build with typescript (#402)
* fix: add tsup config * fix: use tsc to build package
1 parent 3ffc5ac commit 41dccc9

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+253
-222
lines changed

eslint.config.mjs

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const compat = new FlatCompat({
2121

2222
export default [
2323
{
24-
ignores: ['.yarn', 'dist/*', '**/*.d.ts', 'coverage/*', '**/commitlint.config.js'],
24+
ignores: ['.yarn', 'dist/*', '**/*.d.ts', 'coverage/*', '**/commitlint.config.ts'],
2525
},
2626
...fixupConfigRules(
2727
compat.extends(

package.json

+9-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,14 @@
77
"source": "./src/index.ts",
88
"types": "./dist/index.d.ts",
99
"type": "module",
10+
"exports": {
11+
".": {
12+
"default": {
13+
"types": "./dist/index.d.ts",
14+
"default": "./dist/index.js"
15+
}
16+
}
17+
},
1018
"sideEffects": false,
1119
"repository": "[email protected]:graasp/graasp-apps-query-client.git",
1220
"author": "Graasp",
@@ -19,7 +27,7 @@
1927
"license": "AGPL3.0-only",
2028
"scripts": {
2129
"dev": "vite",
22-
"build": "tsc && vite build",
30+
"build": "tsc -p tsconfig.build.json",
2331
"commit-msg": "commitlint --edit $1",
2432
"hooks:uninstall": "husky uninstall",
2533
"hooks:install": "husky install",

package.tgz

81.9 KB
Binary file not shown.

src/api/appAction.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { AppAction } from '@graasp/sdk';
22

3-
import { ApiData, Data } from '../types';
4-
import configureAxios from './axios';
5-
import { buildGetAppActionsRoute, buildPostAppActionRoute } from './routes';
3+
import { ApiData, Data } from '../types.js';
4+
import configureAxios from './axios.js';
5+
import { buildGetAppActionsRoute, buildPostAppActionRoute } from './routes.js';
66

77
const axios = configureAxios();
88

src/api/appData.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { AppData, UUID, appendQueryParamToUrl } from '@graasp/sdk';
22

3-
import { ApiData, Data } from '../types';
4-
import configureAxios from './axios';
3+
import { ApiData, Data } from '../types.js';
4+
import configureAxios from './axios.js';
55
import {
66
buildDeleteAppDataRoute,
77
buildDownloadAppDataFileRoute,
88
buildGetAppDataRoute,
99
buildPatchAppDataRoute,
1010
buildPostAppDataRoute,
11-
} from './routes';
11+
} from './routes.js';
1212

1313
const axios = configureAxios();
1414

src/api/appSetting.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import { AppSetting, appendQueryParamToUrl } from '@graasp/sdk';
22

3-
import { ApiData, Data } from '../types';
4-
import configureAxios from './axios';
3+
import { ApiData, Data } from '../types.js';
4+
import configureAxios from './axios.js';
55
import {
66
buildDeleteAppSettingRoute,
77
buildDownloadAppSettingFileRoute,
88
buildGetAppSettingsRoute,
99
buildPatchAppSettingRoute,
1010
buildPostAppSettingRoute,
11-
} from './routes';
11+
} from './routes.js';
1212

1313
const axios = configureAxios();
1414

src/api/apps.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
import { ApiData, AppContext } from '../types';
2-
import configureAxios from './axios';
3-
import { buildGetContextRoute } from './routes';
1+
import { ApiData, AppContext } from '../types.js';
2+
import configureAxios from './axios.js';
3+
import { buildGetContextRoute } from './routes.js';
44

55
const axios = configureAxios();
66

src/api/chatBot.ts

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import { ChatBotMessage, GPTVersion } from '@graasp/sdk';
22

3-
import { ApiData, ChatBotCompletion } from 'types';
4-
5-
import configureAxios from './axios';
6-
import { buildPostChatBotRoute } from './routes';
3+
import { ApiData, ChatBotCompletion } from '../types.js';
4+
import configureAxios from './axios.js';
5+
import { buildPostChatBotRoute } from './routes.js';
76

87
const axios = configureAxios();
98

src/api/index.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
export * from './apps';
2-
export * from './appData';
3-
export * from './appAction';
4-
export * from './appSetting';
5-
export * from './mocks';
6-
export * from './chatBot';
1+
export * from './apps.js';
2+
export * from './appData.js';
3+
export * from './appAction.js';
4+
export * from './appSetting.js';
5+
export * from './mocks.js';
6+
export * from './chatBot.js';

src/api/mocks.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { LocalContext } from '@graasp/sdk';
22

3-
import { Token } from '../types';
4-
import configureAxios from './axios';
3+
import { Token } from '../types.js';
4+
import configureAxios from './axios.js';
55

66
const axios = configureAxios();
77

src/components/GraaspContextDevTool.tsx

+3-3
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ import { Context, HttpMethod, LocalContext, Member, PermissionLevel } from '@gra
2121

2222
import { useQueryClient } from '@tanstack/react-query';
2323

24-
import { LOCAL_CONTEXT_KEY } from '../config/keys';
25-
import { UpdateArgument } from './utils/hooks';
26-
import { TokenContext } from './withToken';
24+
import { LOCAL_CONTEXT_KEY } from '../config/keys.js';
25+
import { UpdateArgument } from './utils/hooks.js';
26+
import { TokenContext } from './withToken.js';
2727

2828
type Props = {
2929
members: Member[];

src/components/index.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
export * from './withContext';
2-
export * from './withToken';
3-
export { default as GraaspContextDevTool } from './GraaspContextDevTool';
4-
export * from './utils/hooks';
1+
export * from './withContext.js';
2+
export * from './withToken.js';
3+
export { default as GraaspContextDevTool } from './GraaspContextDevTool.js';
4+
export * from './utils/hooks.js';

src/components/utils/hooks.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1-
import React from 'react';
1+
import { useCallback, useState } from 'react';
22

33
export type UpdateArgument<T extends object> = T | ((previousArg: T) => Partial<T>);
44

55
export function useObjectState<T extends object>(
66
initialValue: T,
77
): [T, (arg: UpdateArgument<T>) => void] {
8-
const [state, setState] = React.useState(initialValue);
8+
const [state, setState] = useState(initialValue);
99

10-
const handleUpdate = React.useCallback((arg: UpdateArgument<T>) => {
10+
const handleUpdate = useCallback((arg: UpdateArgument<T>) => {
1111
if (typeof arg === 'function') {
1212
setState((s) => {
1313
const newState = arg(s);

src/components/withContext.tsx

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { Context, LocalContext, PermissionLevel } from '@graasp/sdk';
77

88
import { UseQueryResult } from '@tanstack/react-query';
99

10-
import { AutoResizer } from './AutoResizer';
10+
import { AutoResizer } from './AutoResizer.js';
1111

1212
export const defaultContextValue: LocalContext = {
1313
apiHost: '',
@@ -31,7 +31,7 @@ interface WithLocalContextProps {
3131
itemId: string,
3232
defaultValue: LocalContext,
3333
) => UseQueryResult<LocalContext, unknown>;
34-
LoadingComponent?: React.ReactElement;
34+
LoadingComponent?: ReactElement;
3535
defaultValue: LocalContext;
3636
onError?: (error: unknown) => void;
3737
useAutoResize?: (itemId: string) => void;

src/components/withToken.tsx

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import React, { ReactElement, createContext } from 'react';
22

33
import { UseQueryResult } from '@tanstack/react-query';
44

5-
import { Token } from '../types';
5+
import { Token } from '../types.js';
66

77
const TokenContext = createContext<string>('');
88

src/config/utils.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,14 @@ import { LocalContext } from '@graasp/sdk';
33
import { QueryClient } from '@tanstack/react-query';
44
import { StatusCodes } from 'http-status-codes';
55

6-
import { QueryClientConfig } from '../types';
6+
import { QueryClientConfig } from '../types.js';
77
import {
88
MissingAppKeyError,
99
MissingAppOriginError,
1010
MissingNecessaryDataError,
1111
MissingPermissionError,
12-
} from './errors';
13-
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY } from './keys';
12+
} from './errors.js';
13+
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY } from './keys.js';
1414

1515
export class MissingApiHostError extends Error {
1616
statusCode: number;

src/hooks/app.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,12 @@ import {
77
FIXTURE_CONTEXT,
88
UNAUTHORIZED_RESPONSE,
99
buildMockLocalContext,
10-
} from '../../test/constants';
11-
import { mockHook, setUpTest } from '../../test/utils';
12-
import { buildGetContextRoute } from '../api/routes';
13-
import { MOCK_TOKEN } from '../config/constants';
14-
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, buildAppContextKey } from '../config/keys';
15-
import { MissingApiHostError } from '../config/utils';
10+
} from '../../test/constants.js';
11+
import { mockHook, setUpTest } from '../../test/utils.js';
12+
import { buildGetContextRoute } from '../api/routes.js';
13+
import { MOCK_TOKEN } from '../config/constants.js';
14+
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, buildAppContextKey } from '../config/keys.js';
15+
import { MissingApiHostError } from '../config/utils.js';
1616

1717
const { hooks, wrapper, queryClient } = setUpTest();
1818
const itemId = v4();

src/hooks/app.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import { useQuery, useQueryClient } from '@tanstack/react-query';
22

3-
import * as Api from '../api';
4-
import { buildAppContextKey } from '../config/keys';
5-
import { getApiHost, getDataOrThrow } from '../config/utils';
6-
import { QueryClientConfig } from '../types';
3+
import * as Api from '../api/index.js';
4+
import { buildAppContextKey } from '../config/keys.js';
5+
import { getApiHost, getDataOrThrow } from '../config/utils.js';
6+
import { QueryClientConfig } from '../types.js';
77

88
export default (queryConfig: QueryClientConfig) => {
99
const { retry, cacheTime, staleTime } = queryConfig;

src/hooks/appAction.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ import { PermissionLevel } from '@graasp/sdk';
22

33
import { useQuery, useQueryClient } from '@tanstack/react-query';
44

5-
import * as Api from '../api';
6-
import { appActionKeys } from '../config/keys';
7-
import { getApiHost, getData, getDataOrThrow, getPermissionLevel } from '../config/utils';
8-
import { Data, QueryClientConfig } from '../types';
9-
import { configureWsAppActionsHooks } from '../ws/hooks/app';
10-
import { WebsocketClient } from '../ws/ws-client';
5+
import * as Api from '../api/index.js';
6+
import { appActionKeys } from '../config/keys.js';
7+
import { getApiHost, getData, getDataOrThrow, getPermissionLevel } from '../config/utils.js';
8+
import { Data, QueryClientConfig } from '../types.js';
9+
import { configureWsAppActionsHooks } from '../ws/hooks/app.js';
10+
import { WebsocketClient } from '../ws/ws-client.js';
1111

1212
export default (queryConfig: QueryClientConfig, websocketClient?: WebsocketClient) => {
1313
const { retry, cacheTime, staleTime } = queryConfig;

src/hooks/appData.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import {
99
S3_FILE_BLOB_RESPONSE,
1010
UNAUTHORIZED_RESPONSE,
1111
buildMockLocalContext,
12-
} from '../../test/constants';
13-
import { Endpoint, mockHook, setUpTest } from '../../test/utils';
14-
import { buildDownloadAppDataFileRoute, buildGetAppDataRoute } from '../api/routes';
15-
import { MOCK_TOKEN } from '../config/constants';
16-
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, appDataKeys } from '../config/keys';
17-
import { MissingApiHostError } from '../config/utils';
12+
} from '../../test/constants.js';
13+
import { Endpoint, mockHook, setUpTest } from '../../test/utils.js';
14+
import { buildDownloadAppDataFileRoute, buildGetAppDataRoute } from '../api/routes.js';
15+
import { MOCK_TOKEN } from '../config/constants.js';
16+
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, appDataKeys } from '../config/keys.js';
17+
import { MissingApiHostError } from '../config/utils.js';
1818

1919
const { hooks, wrapper, queryClient } = setUpTest();
2020
const itemId = v4();

src/hooks/appData.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { useQuery, useQueryClient } from '@tanstack/react-query';
22

3-
import * as Api from '../api';
4-
import { MissingFileIdError } from '../config/errors';
5-
import { appDataKeys } from '../config/keys';
6-
import { getApiHost, getData, getDataOrThrow } from '../config/utils';
7-
import { Data, QueryClientConfig } from '../types';
8-
import { configureWsAppDataHooks } from '../ws/hooks/app';
9-
import { WebsocketClient } from '../ws/ws-client';
3+
import * as Api from '../api/index.js';
4+
import { MissingFileIdError } from '../config/errors.js';
5+
import { appDataKeys } from '../config/keys.js';
6+
import { getApiHost, getData, getDataOrThrow } from '../config/utils.js';
7+
import { Data, QueryClientConfig } from '../types.js';
8+
import { configureWsAppDataHooks } from '../ws/hooks/app.js';
9+
import { WebsocketClient } from '../ws/ws-client.js';
1010

1111
export default (
1212
queryConfig: QueryClientConfig,

src/hooks/appSetting.test.ts

+6-6
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@ import {
99
S3_FILE_BLOB_RESPONSE,
1010
UNAUTHORIZED_RESPONSE,
1111
buildMockLocalContext,
12-
} from '../../test/constants';
13-
import { Endpoint, mockHook, setUpTest } from '../../test/utils';
14-
import { buildDownloadAppSettingFileRoute, buildGetAppSettingsRoute } from '../api/routes';
15-
import { MOCK_TOKEN } from '../config/constants';
16-
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, appSettingKeys } from '../config/keys';
17-
import { MissingApiHostError } from '../config/utils';
12+
} from '../../test/constants.js';
13+
import { Endpoint, mockHook, setUpTest } from '../../test/utils.js';
14+
import { buildDownloadAppSettingFileRoute, buildGetAppSettingsRoute } from '../api/routes.js';
15+
import { MOCK_TOKEN } from '../config/constants.js';
16+
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, appSettingKeys } from '../config/keys.js';
17+
import { MissingApiHostError } from '../config/utils.js';
1818

1919
const { hooks, wrapper, queryClient } = setUpTest();
2020
const itemId = v4();

src/hooks/appSetting.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { useQuery, useQueryClient } from '@tanstack/react-query';
22

3-
import * as Api from '../api';
4-
import { MissingFileIdError } from '../config/errors';
5-
import { appSettingKeys } from '../config/keys';
6-
import { getApiHost, getData, getDataOrThrow } from '../config/utils';
7-
import { Data, QueryClientConfig } from '../types';
8-
import { configureWsAppSettingHooks } from '../ws/hooks/app';
9-
import { WebsocketClient } from '../ws/ws-client';
3+
import * as Api from '../api/index.js';
4+
import { MissingFileIdError } from '../config/errors.js';
5+
import { appSettingKeys } from '../config/keys.js';
6+
import { getApiHost, getData, getDataOrThrow } from '../config/utils.js';
7+
import { Data, QueryClientConfig } from '../types.js';
8+
import { configureWsAppSettingHooks } from '../ws/hooks/app.js';
9+
import { WebsocketClient } from '../ws/ws-client.js';
1010

1111
export default (queryConfig: QueryClientConfig, websocketClient?: WebsocketClient) => {
1212
const { retry, cacheTime, staleTime } = queryConfig;

src/hooks/index.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
import { QueryClientConfig } from '../types';
2-
import { WebsocketClient } from '../ws/ws-client';
3-
import configureAppsHooks from './app';
4-
import configureAppActionHooks from './appAction';
5-
import configureAppDataHooks from './appData';
6-
import configureAppSettingHooks from './appSetting';
7-
import configurePostMessageHooks from './postMessage';
1+
import { QueryClientConfig } from '../types.js';
2+
import { WebsocketClient } from '../ws/ws-client.js';
3+
import configureAppsHooks from './app.js';
4+
import configureAppActionHooks from './appAction.js';
5+
import configureAppDataHooks from './appData.js';
6+
import configureAppSettingHooks from './appSetting.js';
7+
import configurePostMessageHooks from './postMessage.js';
88

99
const configHooks = (queryConfig: QueryClientConfig, websocketClient?: WebsocketClient) => ({
1010
...configureAppsHooks(queryConfig),

src/hooks/postMessage.test.ts

+11-6
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,21 @@ import { renderHook } from '@testing-library/react';
44
import { v4 } from 'uuid';
55
import { afterEach, describe, expect, it, vi } from 'vitest';
66

7-
import { API_HOST, buildMockLocalContext } from '../../test/constants';
8-
import { mockHook, mockWindowForPostMessage, setUpTest } from '../../test/utils';
9-
import { defaultContextValue } from '../components/withContext';
10-
import { DEFAULT_CONTEXT, DEFAULT_LANG, DEFAULT_PERMISSION, MOCK_TOKEN } from '../config/constants';
7+
import { API_HOST, buildMockLocalContext } from '../../test/constants.js';
8+
import { mockHook, mockWindowForPostMessage, setUpTest } from '../../test/utils.js';
9+
import { defaultContextValue } from '../components/withContext.js';
10+
import {
11+
DEFAULT_CONTEXT,
12+
DEFAULT_LANG,
13+
DEFAULT_PERMISSION,
14+
MOCK_TOKEN,
15+
} from '../config/constants.js';
1116
import {
1217
MissingAppKeyError,
1318
MissingAppOriginError,
1419
MissingMessageChannelPortError,
15-
} from '../config/errors';
16-
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, buildPostMessageKeys } from '../config/keys';
20+
} from '../config/errors.js';
21+
import { AUTH_TOKEN_KEY, LOCAL_CONTEXT_KEY, buildPostMessageKeys } from '../config/keys.js';
1722

1823
const mockItemId = 'mock-item-id';
1924
const POST_MESSAGE_KEYS = buildPostMessageKeys(mockItemId);

0 commit comments

Comments
 (0)