Skip to content

Commit

Permalink
feat: 浏览器sdk解偶polyfill (#560)
Browse files Browse the repository at this point in the history
Co-authored-by: wangting31 <wangting31@baidu.com>
  • Loading branch information
wangting829 and wangting31 authored May 29, 2024
1 parent 7cb260c commit 0636379
Show file tree
Hide file tree
Showing 13 changed files with 1,991 additions and 1,452 deletions.
18 changes: 12 additions & 6 deletions javascript/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@baiducloud/qianfan",
"version": "0.0.11-alpha.2",
"version": "0.0.11-alpha.3",
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
Expand All @@ -23,15 +23,18 @@
"author": "",
"license": "ISC",
"dependencies": {
"@rollup/plugin-inject": "^5.0.5",
"@rollup/plugin-json": "^6.1.0",
"@types/node-fetch": "^2.6.11",
"async-mutex": "^0.5.0",
"bottleneck": "^2.19.5",
"crypto-browserify": "^3.12.0",
"dotenv": "^16.4.1",
"crypto-js": "^4.2.0",
"dotenv": "^16.4.5",
"node-fetch": "2.7.0",
"qianfan-wt": "^0.0.11",
"rollup": "^3.29.4",
"rollup-plugin-node-polyfills": "^0.2.1",
"typescript": "^5.3.3"
"typescript": "^5.3.3",
"web-streams-polyfill": "^4.0.0"
},
"devDependencies": {
"@babel/core": "^7.24.0",
Expand All @@ -43,7 +46,6 @@
"@rollup/plugin-babel": "^6.0.4",
"@rollup/plugin-commonjs": "^25.0.7",
"@rollup/plugin-eslint": "^9.0.5",
"@rollup/plugin-json": "^6.1.0",
"@rollup/plugin-node-resolve": "^15.2.3",
"@rollup/plugin-typescript": "^11.1.6",
"@types/jest": "^29.5.11",
Expand All @@ -53,6 +55,10 @@
"eslint": "^8.57.0",
"jest": "^29.7.0",
"prettier": "^3.2.5",
"rollup-plugin-ignore": "^1.0.10",
"rollup-plugin-node-builtins": "^2.1.2",
"rollup-plugin-node-globals": "^1.4.0",
"rollup-plugin-node-polyfills": "^0.2.1",
"ts-node": "^10.9.2"
}
}
85 changes: 67 additions & 18 deletions javascript/rollup.config.mjs
Original file line number Diff line number Diff line change
@@ -1,29 +1,28 @@
import json from '@rollup/plugin-json';
import babel from '@rollup/plugin-babel';
import commonjs from '@rollup/plugin-commonjs';
import resolve from '@rollup/plugin-node-resolve';
import babel from '@rollup/plugin-babel';
import typescript from '@rollup/plugin-typescript';
import json from '@rollup/plugin-json';
import eslint from '@rollup/plugin-eslint';
import inject from '@rollup/plugin-inject';
import ignore from 'rollup-plugin-ignore';
import nodeGlobals from 'rollup-plugin-node-globals';
import nodePolyfills from 'rollup-plugin-node-polyfills';
import nodeBuiltins from 'rollup-plugin-node-builtins';

export default {
input: 'src/index.ts',
output: [
{
file: 'dist/bundle.js',
format: 'umd',
name: 'MyLibrary',
},
{
file: 'dist/bundle.esm.js',
format: 'es',
},
],
plugins: [
const isBrowserBuild = format => ['es', 'iife'].includes(format);

const createConfig = output => {
const plugins = [
typescript({
tsconfig: 'tsconfig.json',
}),
json(),
resolve(),
resolve({
browser: isBrowserBuild(output.format),
preferBuiltins: !isBrowserBuild(output.format),
dedupe: ['buffer'],
}),
commonjs(),
babel({
extensions: ['.js', '.ts'],
Expand All @@ -39,5 +38,55 @@ export default {
include: ['src/'],
exclude: ['node_modules/'],
}),
],
inject({
Buffer: ['buffer', 'Buffer'],
crypto: 'crypto-js',
}),
];

if (isBrowserBuild(output.format)) {
plugins.push(
nodeGlobals(),
nodePolyfills({
exclude: ['crypto'],
}),
nodeBuiltins()
);
plugins.push(ignore(['dotenv', 'os', 'path']));
}

return {
input: 'src/index.ts',
output,
plugins,
external: isBrowserBuild(output.format) ? [] : ['dotenv'],
onwarn: function (warning, warn) {
if (warning.code === 'CIRCULAR_DEPENDENCY') {
if (warning.importer?.includes('node_modules/bottleneck')
|| warning.importer?.includes('node_modules/asn1.js')) {
return;
}
}
warn(warning);
},
};
};

export default [
createConfig({
file: 'dist/bundle.cjs.js',
format: 'cjs',
sourcemap: false,
}),
createConfig({
file: 'dist/bundle.esm.js',
format: 'es',
sourcemap: false,
}),
createConfig({
file: 'dist/bundle.iife.js',
format: 'iife',
name: 'QianfanSDK',
sourcemap: true,
}),
];
4 changes: 2 additions & 2 deletions javascript/src/Base/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// limitations under the License.

import HttpClient from '../HttpClient';
import Fetch, {FetchConfig} from '../Fetch/fetch';
import Fetch, {FetchConfig} from '../Fetch/index';
import {DEFAULT_HEADERS} from '../constant';
import {getAccessTokenUrl, getIAMConfig, getDefaultConfig, getPath, getCurrentEnvironment} from '../utils';
import {Resp, AsyncIterableType, AccessTokenResp} from '../interface';
Expand All @@ -33,7 +33,7 @@ export class BaseClient {
protected qianfanLlmRetryMaxWaitInterval?: string;
protected Endpoint?: string;
protected headers = DEFAULT_HEADERS;
protected fetchInstance: Fetch;
protected fetchInstance;
protected fetchConfig: FetchConfig;
access_token = '';
expires_in = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@
// limitations under the License.
import DynamicModelEndpoint from '../index';
import HttpClient from '../../HttpClient';
import Fetch from '../../Fetch/fetch';
import Fetch from '../../Fetch/index';

jest.mock('../../HttpClient', () => {
return jest.fn().mockImplementation(() => {
Expand Down
4 changes: 2 additions & 2 deletions javascript/src/DynamicModelEndpoint/index.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
import {Mutex} from 'async-mutex';
import Fetch from '../Fetch/fetch';
import Fetch from '../Fetch/index';
import HttpClient from '../HttpClient';
import {SERVER_LIST_API, DEFAULT_HEADERS, DYNAMIC_INVALID} from '../constant';
import {getTypeMap, typeModelEndpointMap} from './utils';
Expand All @@ -20,7 +20,7 @@ class DynamicModelEndpoint {
/**
* 构造函数
*/
protected fetchInstance: Fetch;
protected fetchInstance;

constructor(client: HttpClient, qianfanConsoleApiBaseUrl: string, qianfanBaseUrl: string) {
this.client = client;
Expand Down
Loading

0 comments on commit 0636379

Please sign in to comment.