{ // Place your FastGPT 工作区 snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and // description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope // is left empty or omitted, the snippet gets applied to all languages. The prefix is what is // used to trigger the snippet and the body will be expanded and inserted. Possible variables are: // $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders. // Placeholders with the same ids are connected. // Example: "Next api template": { "scope": "javascript,typescript", "prefix": "nextapi", "body": [ "import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next';", "import { NextAPI } from '@/service/middleware/entry';", "", "export type ${TM_FILENAME_BASE}Query = {};", "", "export type ${TM_FILENAME_BASE}Body = {};", "", "export type ${TM_FILENAME_BASE}Response = {};", "", "async function handler(", " req: ApiRequestProps<${TM_FILENAME_BASE}Body, ${TM_FILENAME_BASE}Query>,", " res: ApiResponseType", "): Promise<${TM_FILENAME_BASE}Response> {", " $1", " return {}", "}", "", "export default NextAPI(handler);" ], "description": "FastGPT Next API template" }, "use context template": { "scope": "typescriptreact", "prefix": "context", "body": [ "import React, { ReactNode } from 'react';", "import { createContext } from 'use-context-selector';", "", "type ContextType = {$1};", "", "export const Context = createContext({});", "", "const ContextProvider = ({ children }: { children: ReactNode }) => {", " const contextValue: ContextType = {};", " return {children};", "};", "", "export default ContextProvider" ], "description": "FastGPT usecontext template" }, "Jest test template": { "scope": "typescriptreact", "prefix": "jesttest", "body": [ "import '@/pages/api/__mocks__/base';", "import { root } from '@/pages/api/__mocks__/db/init';", "import { getTestRequest } from '@fastgpt/service/test/utils'; ;", "import { AppErrEnum } from '@fastgpt/global/common/error/code/app';", "import handler from './demo';", "", "// Import the schema", "import { MongoOutLink } from '@fastgpt/service/support/outLink/schema';", "", "beforeAll(async () => {", " // await MongoOutLink.create({", " // shareId: 'aaa',", " // appId: root.appId,", " // tmbId: root.tmbId,", " // teamId: root.teamId,", " // type: 'share',", " // name: 'aaa'", " // })", "});", "", "test('Should return a list of outLink', async () => {", " // Mock request", " const res = (await handler(", " ...getTestRequest({", " query: {", " appId: root.appId,", " type: 'share'", " },", " user: root", " })", " )) as any;", "", " expect(res.code).toBe(200);", " expect(res.data.length).toBe(2);", "});", "", "test('appId is required', async () => {", " const res = (await handler(", " ...getTestRequest({", " query: {", " type: 'share'", " },", " user: root", " })", " )) as any;", " expect(res.code).toBe(500);", " expect(res.error).toBe(AppErrEnum.unExist);", "});", "", "test('if type is not provided, return nothing', async () => {", " const res = (await handler(", " ...getTestRequest({", " query: {", " appId: root.appId", " },", " user: root", " })", " )) as any;", " expect(res.code).toBe(200);", " expect(res.data.length).toBe(0);", "});" ] } }