From 0f2ba461a486a28443edc9c24c5f03b78ec728dd Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Tue, 19 Sep 2023 10:58:20 -0700 Subject: [PATCH 01/14] chore add rollup configs --- packages/sdk/cloudflare/example/src/index.ts | 2 +- packages/sdk/cloudflare/package.json | 15 ++++- packages/sdk/cloudflare/rollup.config.ts | 50 ++++++++++++++++ packages/sdk/cloudflare/tsconfig.json | 4 +- packages/shared/common/package.json | 16 ++++- packages/shared/common/rollup.config.ts | 59 +++++++++++++++++++ packages/shared/common/tsconfig.json | 4 +- packages/shared/sdk-server-edge/package.json | 17 +++++- .../shared/sdk-server-edge/rollup.config.ts | 49 +++++++++++++++ packages/shared/sdk-server-edge/tsconfig.json | 4 +- packages/shared/sdk-server/package.json | 16 ++++- packages/shared/sdk-server/rollup.config.ts | 49 +++++++++++++++ packages/shared/sdk-server/tsconfig.json | 4 +- 13 files changed, 271 insertions(+), 18 deletions(-) create mode 100644 packages/sdk/cloudflare/rollup.config.ts create mode 100644 packages/shared/common/rollup.config.ts create mode 100644 packages/shared/sdk-server-edge/rollup.config.ts create mode 100644 packages/shared/sdk-server/rollup.config.ts diff --git a/packages/sdk/cloudflare/example/src/index.ts b/packages/sdk/cloudflare/example/src/index.ts index 9658d32c07..c3ab1a5d3c 100644 --- a/packages/sdk/cloudflare/example/src/index.ts +++ b/packages/sdk/cloudflare/example/src/index.ts @@ -4,7 +4,7 @@ export default { async fetch(request: Request, env: Bindings): Promise { const sdkKey = 'test-sdk-key'; const flagKey = 'testFlag1'; - const context = { kind: 'user', key: 'test-user-key-1', email: 'test@gmail.com' }; + const context = { kind: 'user', key: 'test-user-key-1', email: 'test@gmaixl.com' }; // start using ld const client = initLD(sdkKey, env.LD_KV); diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 2a68d0ae62..568ec570f8 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -26,8 +26,10 @@ "dist" ], "scripts": { - "build": "../../../scripts/build-package.sh", "clean": "rimraf dist", + "rb": "rollup -c --configPlugin typescript", + "rbw": "yarn rb --watch", + "build": "yarn clean && yarn rb", "tsw": "yarn tsc --watch", "start": "rimraf dist && yarn tsw", "lint": "eslint . --ext .ts", @@ -42,6 +44,10 @@ "crypto-js": "^4.1.1" }, "devDependencies": { + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", @@ -57,7 +63,12 @@ "launchdarkly-js-test-helpers": "^2.2.0", "miniflare": "^2.13.0", "prettier": "^3.0.0", - "rimraf": "^5.0.0", + "rimraf": "^5.0.1", + "rollup": "^3.29.2", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.0.2", + "rollup-plugin-esbuild": "^5.0.0", + "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts new file mode 100644 index 0000000000..9d245abff3 --- /dev/null +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -0,0 +1,50 @@ +import json from '@rollup/plugin-json'; +import resolve from '@rollup/plugin-node-resolve'; +import terser from '@rollup/plugin-terser'; +import typescript from '@rollup/plugin-typescript'; +import copy from 'rollup-plugin-copy'; +import dts from 'rollup-plugin-dts'; +import esbuild from 'rollup-plugin-esbuild'; +import filesize from 'rollup-plugin-filesize'; + +const copyToDist = copy({ + targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], + verbose: true, +}); +const plugins = [resolve(), typescript(), esbuild(), json(), terser(), filesize(), copyToDist]; +const external = [/node_modules/, /shared/]; + +export default [ + { + input: 'src/index.ts', + output: [ + { + file: 'dist/cjs/src/index.js', + format: 'cjs', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + output: [ + { + file: 'dist/esm/src/index.js', + format: 'esm', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + plugins: [dts(), json()], + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + }, +]; diff --git a/packages/sdk/cloudflare/tsconfig.json b/packages/sdk/cloudflare/tsconfig.json index 3192817efa..cdc07991e6 100644 --- a/packages/sdk/cloudflare/tsconfig.json +++ b/packages/sdk/cloudflare/tsconfig.json @@ -3,9 +3,9 @@ // Uses "." so it can load package.json. "rootDir": ".", "outDir": "dist", - "target": "es2017", + "target": "ES2017", "lib": ["es6"], - "module": "commonjs", + "module": "ES6", "strict": true, "noImplicitOverride": true, "allowSyntheticDefaultImports": true, diff --git a/packages/shared/common/package.json b/packages/shared/common/package.json index 4f146fabe7..767cd01258 100644 --- a/packages/shared/common/package.json +++ b/packages/shared/common/package.json @@ -20,13 +20,19 @@ ], "scripts": { "test": "npx jest --ci", - "build": "npx tsc", - "clean": "npx tsc --build --clean", + "clean": "rimraf dist", + "rb": "rollup -c --configPlugin typescript", + "rbw": "yarn rb --watch", + "build": "yarn clean && yarn rb", "lint": "npx eslint . --ext .ts", "lint:fix": "yarn run lint -- --fix" }, "license": "Apache-2.0", "devDependencies": { + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/jest": "^29.4.0", "@typescript-eslint/eslint-plugin": "^6.1.0", @@ -40,6 +46,12 @@ "jest": "^29.5.0", "launchdarkly-js-test-helpers": "^2.2.0", "prettier": "^3.0.0", + "rimraf": "^5.0.1", + "rollup": "^3.29.2", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.0.2", + "rollup-plugin-esbuild": "^5.0.0", + "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.0.5", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/shared/common/rollup.config.ts b/packages/shared/common/rollup.config.ts new file mode 100644 index 0000000000..1118e45f77 --- /dev/null +++ b/packages/shared/common/rollup.config.ts @@ -0,0 +1,59 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import json from '@rollup/plugin-json'; +import resolve from '@rollup/plugin-node-resolve'; +import terser from '@rollup/plugin-terser'; +// import typescript from '@rollup/plugin-typescript'; +import copy from 'rollup-plugin-copy'; +import dts from 'rollup-plugin-dts'; +import esbuild from 'rollup-plugin-esbuild'; +import filesize from 'rollup-plugin-filesize'; + +const copyToDist = copy({ + targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], + verbose: true, +}); +const plugins = [ + resolve(), + // typescript({ compilerOptions: { noEmit: true } }), + esbuild(), + json(), + terser(), + filesize(), + copyToDist, +]; +const external = [/node_modules/]; + +export default [ + { + input: 'src/index.ts', + output: [ + { + file: 'dist/cjs/src/index.js', + format: 'cjs', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + output: [ + { + file: 'dist/esm/src/index.js', + format: 'esm', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + plugins: [dts(), json()], + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + }, +]; diff --git a/packages/shared/common/tsconfig.json b/packages/shared/common/tsconfig.json index cd3f7af3c0..31abbb4e03 100644 --- a/packages/shared/common/tsconfig.json +++ b/packages/shared/common/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "target": "es2017", + "target": "ES2017", "lib": ["es6"], - "module": "commonjs", + "module": "NodeNext", "strict": true, "noImplicitOverride": true, // Needed for CommonJS modules: markdown-it, fs-extra diff --git a/packages/shared/sdk-server-edge/package.json b/packages/shared/sdk-server-edge/package.json index cba17cd4a6..029f4ca6da 100644 --- a/packages/shared/sdk-server-edge/package.json +++ b/packages/shared/sdk-server-edge/package.json @@ -25,9 +25,11 @@ "dist" ], "scripts": { - "build": "../../../scripts/build-package.sh", - "tsw": "yarn tsc --watch", "clean": "rimraf dist", + "rb": "rollup -c --configPlugin typescript", + "rbw": "yarn rb --watch", + "build": "yarn clean && yarn rb", + "tsw": "yarn tsc --watch", "start": "rimraf dist && yarn tsw", "lint": "eslint . --ext .ts", "prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore", @@ -40,6 +42,10 @@ "crypto-js": "^4.1.1" }, "devDependencies": { + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", @@ -56,7 +62,12 @@ "launchdarkly-js-test-helpers": "^2.2.0", "npm-dts": "^1.3.12", "prettier": "^3.0.0", - "rimraf": "^5.0.0", + "rimraf": "^5.0.1", + "rollup": "^3.29.2", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.0.2", + "rollup-plugin-esbuild": "^5.0.0", + "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/shared/sdk-server-edge/rollup.config.ts b/packages/shared/sdk-server-edge/rollup.config.ts new file mode 100644 index 0000000000..736fe44f20 --- /dev/null +++ b/packages/shared/sdk-server-edge/rollup.config.ts @@ -0,0 +1,49 @@ +import json from '@rollup/plugin-json'; +import resolve from '@rollup/plugin-node-resolve'; +import terser from '@rollup/plugin-terser'; +import copy from 'rollup-plugin-copy'; +import dts from 'rollup-plugin-dts'; +import esbuild from 'rollup-plugin-esbuild'; +import filesize from 'rollup-plugin-filesize'; + +const copyToDist = copy({ + targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], + verbose: true, +}); +const plugins = [resolve(), esbuild(), json(), terser(), filesize(), copyToDist]; +const external = [/node_modules/, /shared/]; + +export default [ + { + input: 'src/index.ts', + output: [ + { + file: 'dist/cjs/src/index.js', + format: 'cjs', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + output: [ + { + file: 'dist/esm/src/index.js', + format: 'esm', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + plugins: [dts(), json()], + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + }, +]; diff --git a/packages/shared/sdk-server-edge/tsconfig.json b/packages/shared/sdk-server-edge/tsconfig.json index a34abfe7c6..595063db4a 100644 --- a/packages/shared/sdk-server-edge/tsconfig.json +++ b/packages/shared/sdk-server-edge/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": ".", "outDir": "dist", - "target": "es2017", + "target": "ES2017", "lib": ["es6", "webworker"], - "module": "commonjs", + "module": "ES6", "strict": true, "noImplicitOverride": true, "allowSyntheticDefaultImports": true, diff --git a/packages/shared/sdk-server/package.json b/packages/shared/sdk-server/package.json index 9a3c4fbb94..49e4ae1ca2 100644 --- a/packages/shared/sdk-server/package.json +++ b/packages/shared/sdk-server/package.json @@ -20,8 +20,10 @@ ], "scripts": { "test": "npx jest --ci", - "build": "npx tsc", - "clean": "npx tsc --build --clean", + "clean": "rimraf dist", + "rb": "rollup -c --configPlugin typescript", + "rbw": "yarn rb --watch", + "build": "yarn clean && yarn rb", "lint": "npx eslint . --ext .ts", "lint:fix": "yarn run lint -- --fix" }, @@ -31,6 +33,10 @@ "semver": "7.5.4" }, "devDependencies": { + "@rollup/plugin-json": "^6.0.0", + "@rollup/plugin-node-resolve": "^15.2.1", + "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/jest": "^29.4.0", "@types/semver": "^7.3.13", @@ -46,6 +52,12 @@ "jest-diff": "^28.1.1", "launchdarkly-js-test-helpers": "^2.2.0", "prettier": "^3.0.0", + "rimraf": "^5.0.1", + "rollup": "^3.29.2", + "rollup-plugin-copy": "^3.5.0", + "rollup-plugin-dts": "^6.0.2", + "rollup-plugin-esbuild": "^5.0.0", + "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.0.5", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/shared/sdk-server/rollup.config.ts b/packages/shared/sdk-server/rollup.config.ts new file mode 100644 index 0000000000..736fe44f20 --- /dev/null +++ b/packages/shared/sdk-server/rollup.config.ts @@ -0,0 +1,49 @@ +import json from '@rollup/plugin-json'; +import resolve from '@rollup/plugin-node-resolve'; +import terser from '@rollup/plugin-terser'; +import copy from 'rollup-plugin-copy'; +import dts from 'rollup-plugin-dts'; +import esbuild from 'rollup-plugin-esbuild'; +import filesize from 'rollup-plugin-filesize'; + +const copyToDist = copy({ + targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], + verbose: true, +}); +const plugins = [resolve(), esbuild(), json(), terser(), filesize(), copyToDist]; +const external = [/node_modules/, /shared/]; + +export default [ + { + input: 'src/index.ts', + output: [ + { + file: 'dist/cjs/src/index.js', + format: 'cjs', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + output: [ + { + file: 'dist/esm/src/index.js', + format: 'esm', + sourcemap: true, + }, + ], + plugins, + external, + }, + { + input: 'src/index.ts', + plugins: [dts(), json()], + output: { + file: 'dist/index.d.ts', + format: 'es', + }, + }, +]; diff --git a/packages/shared/sdk-server/tsconfig.json b/packages/shared/sdk-server/tsconfig.json index cd3f7af3c0..968d69dbd6 100644 --- a/packages/shared/sdk-server/tsconfig.json +++ b/packages/shared/sdk-server/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "target": "es2017", + "target": "ES2017", "lib": ["es6"], - "module": "commonjs", + "module": "ES6", "strict": true, "noImplicitOverride": true, // Needed for CommonJS modules: markdown-it, fs-extra From 78e8d51fd10ab7779662a657d9d507020dbca4e5 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Tue, 19 Sep 2023 14:57:39 -0700 Subject: [PATCH 02/14] chore: rollback unnecessary rollup changes to base packages. --- packages/shared/common/rollup.config.ts | 59 ------------------- packages/shared/common/tsconfig.json | 4 +- .../shared/sdk-server-edge/rollup.config.ts | 49 --------------- packages/shared/sdk-server-edge/tsconfig.json | 4 +- packages/shared/sdk-server/rollup.config.ts | 49 --------------- packages/shared/sdk-server/tsconfig.json | 4 +- 6 files changed, 6 insertions(+), 163 deletions(-) delete mode 100644 packages/shared/common/rollup.config.ts delete mode 100644 packages/shared/sdk-server-edge/rollup.config.ts delete mode 100644 packages/shared/sdk-server/rollup.config.ts diff --git a/packages/shared/common/rollup.config.ts b/packages/shared/common/rollup.config.ts deleted file mode 100644 index 1118e45f77..0000000000 --- a/packages/shared/common/rollup.config.ts +++ /dev/null @@ -1,59 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import json from '@rollup/plugin-json'; -import resolve from '@rollup/plugin-node-resolve'; -import terser from '@rollup/plugin-terser'; -// import typescript from '@rollup/plugin-typescript'; -import copy from 'rollup-plugin-copy'; -import dts from 'rollup-plugin-dts'; -import esbuild from 'rollup-plugin-esbuild'; -import filesize from 'rollup-plugin-filesize'; - -const copyToDist = copy({ - targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], - verbose: true, -}); -const plugins = [ - resolve(), - // typescript({ compilerOptions: { noEmit: true } }), - esbuild(), - json(), - terser(), - filesize(), - copyToDist, -]; -const external = [/node_modules/]; - -export default [ - { - input: 'src/index.ts', - output: [ - { - file: 'dist/cjs/src/index.js', - format: 'cjs', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - output: [ - { - file: 'dist/esm/src/index.js', - format: 'esm', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - plugins: [dts(), json()], - output: { - file: 'dist/index.d.ts', - format: 'es', - }, - }, -]; diff --git a/packages/shared/common/tsconfig.json b/packages/shared/common/tsconfig.json index 31abbb4e03..cd3f7af3c0 100644 --- a/packages/shared/common/tsconfig.json +++ b/packages/shared/common/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "target": "ES2017", + "target": "es2017", "lib": ["es6"], - "module": "NodeNext", + "module": "commonjs", "strict": true, "noImplicitOverride": true, // Needed for CommonJS modules: markdown-it, fs-extra diff --git a/packages/shared/sdk-server-edge/rollup.config.ts b/packages/shared/sdk-server-edge/rollup.config.ts deleted file mode 100644 index 736fe44f20..0000000000 --- a/packages/shared/sdk-server-edge/rollup.config.ts +++ /dev/null @@ -1,49 +0,0 @@ -import json from '@rollup/plugin-json'; -import resolve from '@rollup/plugin-node-resolve'; -import terser from '@rollup/plugin-terser'; -import copy from 'rollup-plugin-copy'; -import dts from 'rollup-plugin-dts'; -import esbuild from 'rollup-plugin-esbuild'; -import filesize from 'rollup-plugin-filesize'; - -const copyToDist = copy({ - targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], - verbose: true, -}); -const plugins = [resolve(), esbuild(), json(), terser(), filesize(), copyToDist]; -const external = [/node_modules/, /shared/]; - -export default [ - { - input: 'src/index.ts', - output: [ - { - file: 'dist/cjs/src/index.js', - format: 'cjs', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - output: [ - { - file: 'dist/esm/src/index.js', - format: 'esm', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - plugins: [dts(), json()], - output: { - file: 'dist/index.d.ts', - format: 'es', - }, - }, -]; diff --git a/packages/shared/sdk-server-edge/tsconfig.json b/packages/shared/sdk-server-edge/tsconfig.json index 595063db4a..a34abfe7c6 100644 --- a/packages/shared/sdk-server-edge/tsconfig.json +++ b/packages/shared/sdk-server-edge/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": ".", "outDir": "dist", - "target": "ES2017", + "target": "es2017", "lib": ["es6", "webworker"], - "module": "ES6", + "module": "commonjs", "strict": true, "noImplicitOverride": true, "allowSyntheticDefaultImports": true, diff --git a/packages/shared/sdk-server/rollup.config.ts b/packages/shared/sdk-server/rollup.config.ts deleted file mode 100644 index 736fe44f20..0000000000 --- a/packages/shared/sdk-server/rollup.config.ts +++ /dev/null @@ -1,49 +0,0 @@ -import json from '@rollup/plugin-json'; -import resolve from '@rollup/plugin-node-resolve'; -import terser from '@rollup/plugin-terser'; -import copy from 'rollup-plugin-copy'; -import dts from 'rollup-plugin-dts'; -import esbuild from 'rollup-plugin-esbuild'; -import filesize from 'rollup-plugin-filesize'; - -const copyToDist = copy({ - targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], - verbose: true, -}); -const plugins = [resolve(), esbuild(), json(), terser(), filesize(), copyToDist]; -const external = [/node_modules/, /shared/]; - -export default [ - { - input: 'src/index.ts', - output: [ - { - file: 'dist/cjs/src/index.js', - format: 'cjs', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - output: [ - { - file: 'dist/esm/src/index.js', - format: 'esm', - sourcemap: true, - }, - ], - plugins, - external, - }, - { - input: 'src/index.ts', - plugins: [dts(), json()], - output: { - file: 'dist/index.d.ts', - format: 'es', - }, - }, -]; diff --git a/packages/shared/sdk-server/tsconfig.json b/packages/shared/sdk-server/tsconfig.json index 968d69dbd6..cd3f7af3c0 100644 --- a/packages/shared/sdk-server/tsconfig.json +++ b/packages/shared/sdk-server/tsconfig.json @@ -2,9 +2,9 @@ "compilerOptions": { "rootDir": "src", "outDir": "dist", - "target": "ES2017", + "target": "es2017", "lib": ["es6"], - "module": "ES6", + "module": "commonjs", "strict": true, "noImplicitOverride": true, // Needed for CommonJS modules: markdown-it, fs-extra From fd270f3dd2777c41f8013ac2fdb44d4646195325 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Tue, 19 Sep 2023 14:59:14 -0700 Subject: [PATCH 03/14] chore: rollback more unnecessary changes. --- packages/shared/common/package.json | 16 ++-------------- packages/shared/sdk-server-edge/package.json | 17 +++-------------- packages/shared/sdk-server/package.json | 16 ++-------------- 3 files changed, 7 insertions(+), 42 deletions(-) diff --git a/packages/shared/common/package.json b/packages/shared/common/package.json index 767cd01258..4f146fabe7 100644 --- a/packages/shared/common/package.json +++ b/packages/shared/common/package.json @@ -20,19 +20,13 @@ ], "scripts": { "test": "npx jest --ci", - "clean": "rimraf dist", - "rb": "rollup -c --configPlugin typescript", - "rbw": "yarn rb --watch", - "build": "yarn clean && yarn rb", + "build": "npx tsc", + "clean": "npx tsc --build --clean", "lint": "npx eslint . --ext .ts", "lint:fix": "yarn run lint -- --fix" }, "license": "Apache-2.0", "devDependencies": { - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/jest": "^29.4.0", "@typescript-eslint/eslint-plugin": "^6.1.0", @@ -46,12 +40,6 @@ "jest": "^29.5.0", "launchdarkly-js-test-helpers": "^2.2.0", "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "rollup": "^3.29.2", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-dts": "^6.0.2", - "rollup-plugin-esbuild": "^5.0.0", - "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.0.5", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/shared/sdk-server-edge/package.json b/packages/shared/sdk-server-edge/package.json index 029f4ca6da..cba17cd4a6 100644 --- a/packages/shared/sdk-server-edge/package.json +++ b/packages/shared/sdk-server-edge/package.json @@ -25,11 +25,9 @@ "dist" ], "scripts": { - "clean": "rimraf dist", - "rb": "rollup -c --configPlugin typescript", - "rbw": "yarn rb --watch", - "build": "yarn clean && yarn rb", + "build": "../../../scripts/build-package.sh", "tsw": "yarn tsc --watch", + "clean": "rimraf dist", "start": "rimraf dist && yarn tsw", "lint": "eslint . --ext .ts", "prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore", @@ -42,10 +40,6 @@ "crypto-js": "^4.1.1" }, "devDependencies": { - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", @@ -62,12 +56,7 @@ "launchdarkly-js-test-helpers": "^2.2.0", "npm-dts": "^1.3.12", "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "rollup": "^3.29.2", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-dts": "^6.0.2", - "rollup-plugin-esbuild": "^5.0.0", - "rollup-plugin-filesize": "^10.0.0", + "rimraf": "^5.0.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/shared/sdk-server/package.json b/packages/shared/sdk-server/package.json index 49e4ae1ca2..9a3c4fbb94 100644 --- a/packages/shared/sdk-server/package.json +++ b/packages/shared/sdk-server/package.json @@ -20,10 +20,8 @@ ], "scripts": { "test": "npx jest --ci", - "clean": "rimraf dist", - "rb": "rollup -c --configPlugin typescript", - "rbw": "yarn rb --watch", - "build": "yarn clean && yarn rb", + "build": "npx tsc", + "clean": "npx tsc --build --clean", "lint": "npx eslint . --ext .ts", "lint:fix": "yarn run lint -- --fix" }, @@ -33,10 +31,6 @@ "semver": "7.5.4" }, "devDependencies": { - "@rollup/plugin-json": "^6.0.0", - "@rollup/plugin-node-resolve": "^15.2.1", - "@rollup/plugin-terser": "^0.4.3", - "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/jest": "^29.4.0", "@types/semver": "^7.3.13", @@ -52,12 +46,6 @@ "jest-diff": "^28.1.1", "launchdarkly-js-test-helpers": "^2.2.0", "prettier": "^3.0.0", - "rimraf": "^5.0.1", - "rollup": "^3.29.2", - "rollup-plugin-copy": "^3.5.0", - "rollup-plugin-dts": "^6.0.2", - "rollup-plugin-esbuild": "^5.0.0", - "rollup-plugin-filesize": "^10.0.0", "ts-jest": "^29.0.5", "typedoc": "0.25.0", "typescript": "5.1.6" From 2cc5a86b8c3fcadeb4576b3945091cdd6807bc79 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Tue, 19 Sep 2023 15:51:59 -0700 Subject: [PATCH 04/14] fix: moved js-core dep to dev dep. include js-core packages as part of bundle. removed redundant typescript plugin. --- packages/sdk/cloudflare/package.json | 4 ++-- packages/sdk/cloudflare/rollup.config.ts | 7 ++++--- packages/sdk/cloudflare/src/index.ts | 2 ++ scripts/build-package.sh | 3 ++- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 568ec570f8..2ec9eb0f0a 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -40,14 +40,14 @@ }, "dependencies": { "@cloudflare/workers-types": "^4.20230321.0", - "@launchdarkly/js-server-sdk-common-edge": "1.0.13", "crypto-js": "^4.1.1" }, "devDependencies": { + "@launchdarkly/js-server-sdk-common-edge": "1.0.13", + "@rollup/plugin-commonjs": "^25.0.4", "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-terser": "^0.4.3", - "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts index 9d245abff3..876df4be3a 100644 --- a/packages/sdk/cloudflare/rollup.config.ts +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -1,7 +1,8 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; import terser from '@rollup/plugin-terser'; -import typescript from '@rollup/plugin-typescript'; import copy from 'rollup-plugin-copy'; import dts from 'rollup-plugin-dts'; import esbuild from 'rollup-plugin-esbuild'; @@ -11,8 +12,8 @@ const copyToDist = copy({ targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], verbose: true, }); -const plugins = [resolve(), typescript(), esbuild(), json(), terser(), filesize(), copyToDist]; -const external = [/node_modules/, /shared/]; +const plugins = [resolve(), commonjs(), esbuild(), json(), terser(), filesize(), copyToDist]; +const external = [/node_modules/, (id: string) => !id.includes('js-core')]; export default [ { diff --git a/packages/sdk/cloudflare/src/index.ts b/packages/sdk/cloudflare/src/index.ts index 7aa051b975..5236c85abb 100644 --- a/packages/sdk/cloudflare/src/index.ts +++ b/packages/sdk/cloudflare/src/index.ts @@ -10,6 +10,7 @@ */ import type { KVNamespace } from '@cloudflare/workers-types'; +// eslint-disable-next-line import/no-extraneous-dependencies import { BasicLogger, EdgeFeatureStore, @@ -20,6 +21,7 @@ import { import createPlatformInfo from './createPlatformInfo'; +// eslint-disable-next-line import/no-extraneous-dependencies export * from '@launchdarkly/js-server-sdk-common-edge'; export type { LDClient }; diff --git a/scripts/build-package.sh b/scripts/build-package.sh index 93e38fe009..0466d3697e 100755 --- a/scripts/build-package.sh +++ b/scripts/build-package.sh @@ -1,3 +1,4 @@ +#!/usr/bin/env bash # Run this script like: # ./scripts/build-package.sh @@ -23,7 +24,7 @@ ESM_PACKAGE_JSON=$( jq -n \ --arg type "module" \ '{ name: $name, version: $version, type: $type }' ) -tsc --module commonjs --outDir dist/cjs/ +tsc --module commonjs --outDir dist/cjs/ echo "$CJS_PACKAGE_JSON" > dist/cjs/package.json tsc --module es2022 --outDir dist/esm/ From f3f3ca2aecab560fc561d78d64a23b9fc18a1a33 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Wed, 20 Sep 2023 12:03:05 -0700 Subject: [PATCH 05/14] chore: update types location to dist/ --- packages/sdk/cloudflare/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 2ec9eb0f0a..1a94dca1f4 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -21,7 +21,7 @@ "import": "./dist/esm/src/index.js" }, "main": "./dist/cjs/src/index.js", - "types": "./dist/cjs/src/index.d.ts", + "types": "./dist/index.d.ts", "files": [ "dist" ], From d5e27e36c7ed2b5063a403b7bf732f93b22a3a84 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Wed, 20 Sep 2023 12:51:58 -0700 Subject: [PATCH 06/14] chore: use local copy of cloudflare sdk for example app. --- packages/sdk/cloudflare/example/link-dev.sh | 6 ++++++ packages/sdk/cloudflare/example/package.json | 7 ++++--- packages/sdk/cloudflare/example/src/index.ts | 3 ++- 3 files changed, 12 insertions(+), 4 deletions(-) create mode 100755 packages/sdk/cloudflare/example/link-dev.sh diff --git a/packages/sdk/cloudflare/example/link-dev.sh b/packages/sdk/cloudflare/example/link-dev.sh new file mode 100755 index 0000000000..376686314e --- /dev/null +++ b/packages/sdk/cloudflare/example/link-dev.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash + +rm -rf node_modules/@launchdarkly +mkdir -p node_modules/@launchdarkly +rsync -aq ../dist node_modules/@launchdarkly/cloudflare-server-sdk +rsync -aq ../package.json node_modules/@launchdarkly/cloudflare-server-sdk diff --git a/packages/sdk/cloudflare/example/package.json b/packages/sdk/cloudflare/example/package.json index 7d299d3218..87cf32fce0 100644 --- a/packages/sdk/cloudflare/example/package.json +++ b/packages/sdk/cloudflare/example/package.json @@ -5,7 +5,7 @@ "module": "./dist/index.mjs", "packageManager": "yarn@3.4.1", "dependencies": { - "@launchdarkly/cloudflare-server-sdk": "^2.0.2" + "@launchdarkly/cloudflare-server-sdk": "^2.1.4" }, "devDependencies": { "@cloudflare/workers-types": "^4.20230321.0", @@ -20,9 +20,10 @@ "wrangler": "2.20.1" }, "scripts": { - "build": "node build.js", + "build": "yarn link-dev && node build.js", "start": "wrangler dev", "deploy": "wrangler publish", - "test": "yarn build && node --experimental-vm-modules --no-warnings node_modules/jest/bin/jest.js" + "test": "yarn build && jest", + "link-dev": "./link-dev.sh" } } diff --git a/packages/sdk/cloudflare/example/src/index.ts b/packages/sdk/cloudflare/example/src/index.ts index c3ab1a5d3c..d25ac65558 100644 --- a/packages/sdk/cloudflare/example/src/index.ts +++ b/packages/sdk/cloudflare/example/src/index.ts @@ -4,7 +4,8 @@ export default { async fetch(request: Request, env: Bindings): Promise { const sdkKey = 'test-sdk-key'; const flagKey = 'testFlag1'; - const context = { kind: 'user', key: 'test-user-key-1', email: 'test@gmaixl.com' }; + // gmail will return false, other emails return true + const context = { kind: 'user', key: 'test-user-key-1', email: 'test@hotmail.com' }; // start using ld const client = initLD(sdkKey, env.LD_KV); From 4200bc884c36952b52e2cbf12655dd15854d5246 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Wed, 20 Sep 2023 15:39:38 -0700 Subject: [PATCH 07/14] chore: fix esm and cjs package.json generation --- packages/sdk/cloudflare/package.json | 8 +++++--- packages/sdk/cloudflare/rollup.config.ts | 25 ++++++++++++++++-------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 1a94dca1f4..c39a4a7d42 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -17,8 +17,9 @@ ], "type": "module", "exports": { - "require": "./dist/cjs/src/index.js", - "import": "./dist/esm/src/index.js" + "types": "./dist/index.d.ts", + "import": "./dist/esm/src/index.js", + "require": "./dist/cjs/src/index.js" }, "main": "./dist/cjs/src/index.js", "types": "./dist/index.d.ts", @@ -51,6 +52,7 @@ "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", + "@types/rollup-plugin-generate-package-json": "^3.2.3", "@typescript-eslint/eslint-plugin": "^6.1.0", "@typescript-eslint/parser": "^6.1.0", "eslint": "^8.45.0", @@ -65,10 +67,10 @@ "prettier": "^3.0.0", "rimraf": "^5.0.1", "rollup": "^3.29.2", - "rollup-plugin-copy": "^3.5.0", "rollup-plugin-dts": "^6.0.2", "rollup-plugin-esbuild": "^5.0.0", "rollup-plugin-filesize": "^10.0.0", + "rollup-plugin-generate-package-json": "^3.2.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", "typescript": "5.1.6" diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts index 876df4be3a..16617183bc 100644 --- a/packages/sdk/cloudflare/rollup.config.ts +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -3,16 +3,25 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; import terser from '@rollup/plugin-terser'; -import copy from 'rollup-plugin-copy'; import dts from 'rollup-plugin-dts'; import esbuild from 'rollup-plugin-esbuild'; import filesize from 'rollup-plugin-filesize'; +import generatePackageJson from 'rollup-plugin-generate-package-json'; + +type PackageType = 'commonjs' | 'module'; +const basePlugins = [resolve(), commonjs(), esbuild(), json(), terser(), filesize()]; +const generatePlugins = (type: PackageType) => + basePlugins.concat([ + generatePackageJson({ + baseContents: ({ name, version }: any) => ({ + name, + version, + type, + }), + outputFolder: type === 'commonjs' ? 'dist/cjs' : 'dist/esm', + }), + ]); -const copyToDist = copy({ - targets: [{ src: 'package.json', dest: ['dist/cjs', 'dist/esm'] }], - verbose: true, -}); -const plugins = [resolve(), commonjs(), esbuild(), json(), terser(), filesize(), copyToDist]; const external = [/node_modules/, (id: string) => !id.includes('js-core')]; export default [ @@ -25,7 +34,7 @@ export default [ sourcemap: true, }, ], - plugins, + plugins: generatePlugins('commonjs'), external, }, { @@ -37,7 +46,7 @@ export default [ sourcemap: true, }, ], - plugins, + plugins: generatePlugins('module'), external, }, { From 1410bf6aec0a6f426f4fea22e6e6ef73e70daa08 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 00:01:30 -0700 Subject: [PATCH 08/14] fix: inject package.json through custom rollup plugin. remove erroneous yarn doc command. --- packages/sdk/cloudflare/package.json | 6 ++- packages/sdk/cloudflare/rollup.config.ts | 56 +++++++++++++++++------- 2 files changed, 44 insertions(+), 18 deletions(-) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index c39a4a7d42..ba11e8d91a 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -37,7 +37,7 @@ "prettier": "prettier --write '**/*.@(js|ts|tsx|json|css)' --ignore-path ../../../.prettierignore", "test": "NODE_OPTIONS=\"--experimental-vm-modules --no-warnings\" jest --ci --runInBand", "coverage": "yarn test --coverage", - "check": "yarn prettier && yarn lint && yarn build && yarn test && yarn doc" + "check": "yarn prettier && yarn lint && yarn build && yarn test" }, "dependencies": { "@cloudflare/workers-types": "^4.20230321.0", @@ -63,6 +63,7 @@ "eslint-plugin-prettier": "^5.0.0", "jest": "^29.5.0", "launchdarkly-js-test-helpers": "^2.2.0", + "load-json-file": "^7.0.1", "miniflare": "^2.13.0", "prettier": "^3.0.0", "rimraf": "^5.0.1", @@ -73,6 +74,7 @@ "rollup-plugin-generate-package-json": "^3.2.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", - "typescript": "5.1.6" + "typescript": "5.1.6", + "write-json-file": "^5.0.0" } } diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts index 16617183bc..a73451acf3 100644 --- a/packages/sdk/cloudflare/rollup.config.ts +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -3,25 +3,49 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; import terser from '@rollup/plugin-terser'; +import { loadJsonFileSync } from 'load-json-file'; +import { OutputOptions } from 'rollup'; import dts from 'rollup-plugin-dts'; import esbuild from 'rollup-plugin-esbuild'; import filesize from 'rollup-plugin-filesize'; -import generatePackageJson from 'rollup-plugin-generate-package-json'; +import { writeJsonFileSync } from 'write-json-file'; -type PackageType = 'commonjs' | 'module'; -const basePlugins = [resolve(), commonjs(), esbuild(), json(), terser(), filesize()]; -const generatePlugins = (type: PackageType) => - basePlugins.concat([ - generatePackageJson({ - baseContents: ({ name, version }: any) => ({ +const cjsIndex = 'dist/cjs/src/index.js'; +const cjsPackageJson = 'dist/cjs/package.json'; +const esmIndex = 'dist/esm/src/index.js'; +const esmPackageJson = 'dist/esm/package.json'; + +function injectPackageJson() { + return { + name: 'inject-package-json', + generateBundle({ format }: OutputOptions) { + const { name, version } = loadJsonFileSync('package.json') as any; + const minimalPackageJson = { name, version, - type, - }), - outputFolder: type === 'commonjs' ? 'dist/cjs' : 'dist/esm', - }), - ]); + type: format === 'cjs' ? 'commonjs' : 'module', + }; + + const packageJsonPath = format === 'cjs' ? cjsPackageJson : esmPackageJson; + writeJsonFileSync(packageJsonPath, minimalPackageJson, { + indent: 2, + }); + }, + }; +} + +const plugins = [ + resolve(), + commonjs(), + esbuild(), + json(), + terser(), + filesize(), + injectPackageJson(), +]; +// the second array item is a function to include all js-core packages in the bundle so they +// are not imported or required as separate npm packages const external = [/node_modules/, (id: string) => !id.includes('js-core')]; export default [ @@ -29,24 +53,24 @@ export default [ input: 'src/index.ts', output: [ { - file: 'dist/cjs/src/index.js', + file: cjsIndex, format: 'cjs', sourcemap: true, }, ], - plugins: generatePlugins('commonjs'), + plugins, external, }, { input: 'src/index.ts', output: [ { - file: 'dist/esm/src/index.js', + file: esmIndex, format: 'esm', sourcemap: true, }, ], - plugins: generatePlugins('module'), + plugins, external, }, { From 3f1f893521cc580f934e96effcf0a8ee5338de5e Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 00:18:25 -0700 Subject: [PATCH 09/14] chore: remove unnecessary link-dev --- packages/sdk/cloudflare/example/package.json | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/packages/sdk/cloudflare/example/package.json b/packages/sdk/cloudflare/example/package.json index 87cf32fce0..eb3b255993 100644 --- a/packages/sdk/cloudflare/example/package.json +++ b/packages/sdk/cloudflare/example/package.json @@ -20,10 +20,9 @@ "wrangler": "2.20.1" }, "scripts": { - "build": "yarn link-dev && node build.js", + "build": "node build.js", "start": "wrangler dev", "deploy": "wrangler publish", - "test": "yarn build && jest", - "link-dev": "./link-dev.sh" + "test": "yarn build && jest" } } From 24878cbe524fd9fdec705096525d567912bdd38f Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 00:19:28 -0700 Subject: [PATCH 10/14] Delete link-dev.sh --- packages/sdk/cloudflare/example/link-dev.sh | 6 ------ 1 file changed, 6 deletions(-) delete mode 100755 packages/sdk/cloudflare/example/link-dev.sh diff --git a/packages/sdk/cloudflare/example/link-dev.sh b/packages/sdk/cloudflare/example/link-dev.sh deleted file mode 100755 index 376686314e..0000000000 --- a/packages/sdk/cloudflare/example/link-dev.sh +++ /dev/null @@ -1,6 +0,0 @@ -#!/usr/bin/env bash - -rm -rf node_modules/@launchdarkly -mkdir -p node_modules/@launchdarkly -rsync -aq ../dist node_modules/@launchdarkly/cloudflare-server-sdk -rsync -aq ../package.json node_modules/@launchdarkly/cloudflare-server-sdk From 1048e4a4a8d009f6f50b603677f9d22ac7687543 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 00:30:18 -0700 Subject: [PATCH 11/14] fix: add missing typescript plugin package for rollup. --- packages/sdk/cloudflare/package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index ba11e8d91a..2659c08b3c 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -49,6 +49,7 @@ "@rollup/plugin-json": "^6.0.0", "@rollup/plugin-node-resolve": "^15.2.1", "@rollup/plugin-terser": "^0.4.3", + "@rollup/plugin-typescript": "^11.1.3", "@trivago/prettier-plugin-sort-imports": "^4.1.1", "@types/crypto-js": "^4.1.1", "@types/jest": "^29.5.0", From 30141a58ec8397d2f6bd85884159f8c12a009153 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 11:13:05 -0700 Subject: [PATCH 12/14] chore: remove unnecessary injectPackageJson and related packages. --- packages/sdk/cloudflare/package.json | 10 ++--- packages/sdk/cloudflare/rollup.config.ts | 54 ++++++------------------ 2 files changed, 16 insertions(+), 48 deletions(-) diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 2659c08b3c..7865e24f0b 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -18,10 +18,10 @@ "type": "module", "exports": { "types": "./dist/index.d.ts", - "import": "./dist/esm/src/index.js", - "require": "./dist/cjs/src/index.js" + "import": "./dist/esm/index.js", + "require": "./dist/cjs/index.js" }, - "main": "./dist/cjs/src/index.js", + "main": "./dist/cjs/index.js", "types": "./dist/index.d.ts", "files": [ "dist" @@ -64,7 +64,6 @@ "eslint-plugin-prettier": "^5.0.0", "jest": "^29.5.0", "launchdarkly-js-test-helpers": "^2.2.0", - "load-json-file": "^7.0.1", "miniflare": "^2.13.0", "prettier": "^3.0.0", "rimraf": "^5.0.1", @@ -75,7 +74,6 @@ "rollup-plugin-generate-package-json": "^3.2.0", "ts-jest": "^29.1.0", "typedoc": "0.25.0", - "typescript": "5.1.6", - "write-json-file": "^5.0.0" + "typescript": "5.1.6" } } diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts index a73451acf3..b9ce28d187 100644 --- a/packages/sdk/cloudflare/rollup.config.ts +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -3,46 +3,16 @@ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; import terser from '@rollup/plugin-terser'; -import { loadJsonFileSync } from 'load-json-file'; -import { OutputOptions } from 'rollup'; import dts from 'rollup-plugin-dts'; import esbuild from 'rollup-plugin-esbuild'; import filesize from 'rollup-plugin-filesize'; -import { writeJsonFileSync } from 'write-json-file'; -const cjsIndex = 'dist/cjs/src/index.js'; -const cjsPackageJson = 'dist/cjs/package.json'; -const esmIndex = 'dist/esm/src/index.js'; -const esmPackageJson = 'dist/esm/package.json'; +const inputPath = 'src/index.ts'; +const cjsPath = 'dist/cjs/index.js'; +const esmPath = 'dist/esm/index.js'; +const typingsPath = 'dist/index.d.ts'; -function injectPackageJson() { - return { - name: 'inject-package-json', - generateBundle({ format }: OutputOptions) { - const { name, version } = loadJsonFileSync('package.json') as any; - const minimalPackageJson = { - name, - version, - type: format === 'cjs' ? 'commonjs' : 'module', - }; - - const packageJsonPath = format === 'cjs' ? cjsPackageJson : esmPackageJson; - writeJsonFileSync(packageJsonPath, minimalPackageJson, { - indent: 2, - }); - }, - }; -} - -const plugins = [ - resolve(), - commonjs(), - esbuild(), - json(), - terser(), - filesize(), - injectPackageJson(), -]; +const plugins = [resolve(), commonjs(), esbuild(), json(), terser(), filesize()]; // the second array item is a function to include all js-core packages in the bundle so they // are not imported or required as separate npm packages @@ -50,10 +20,10 @@ const external = [/node_modules/, (id: string) => !id.includes('js-core')]; export default [ { - input: 'src/index.ts', + input: inputPath, output: [ { - file: cjsIndex, + file: cjsPath, format: 'cjs', sourcemap: true, }, @@ -62,10 +32,10 @@ export default [ external, }, { - input: 'src/index.ts', + input: inputPath, output: [ { - file: esmIndex, + file: esmPath, format: 'esm', sourcemap: true, }, @@ -74,11 +44,11 @@ export default [ external, }, { - input: 'src/index.ts', + input: inputPath, plugins: [dts(), json()], output: { - file: 'dist/index.d.ts', - format: 'es', + file: typingsPath, + format: 'esm', }, }, ]; From 15a0ad1fefa3f39a89dda65b6204768e3b904621 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 11:40:41 -0700 Subject: [PATCH 13/14] fix: eslint extraneous dep errors --- .eslintrc.js | 2 +- packages/sdk/cloudflare/package.json | 5 ++++- packages/sdk/cloudflare/rollup.config.ts | 1 - packages/sdk/cloudflare/src/index.ts | 2 -- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5f6d01889d..bb50a6f605 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -15,7 +15,7 @@ module.exports = { 'import/no-extraneous-dependencies': [ 'error', { - devDependencies: ['**/jest*.ts', '**/*.test.ts'], + devDependencies: ['**/jest*.ts', '**/*.test.ts', '**/rollup.config.ts'], }, ], }, diff --git a/packages/sdk/cloudflare/package.json b/packages/sdk/cloudflare/package.json index 7865e24f0b..6e07ac1c49 100644 --- a/packages/sdk/cloudflare/package.json +++ b/packages/sdk/cloudflare/package.json @@ -75,5 +75,8 @@ "ts-jest": "^29.1.0", "typedoc": "0.25.0", "typescript": "5.1.6" - } + }, + "bundledDependencies": [ + "@launchdarkly/js-server-sdk-common-edge" + ] } diff --git a/packages/sdk/cloudflare/rollup.config.ts b/packages/sdk/cloudflare/rollup.config.ts index b9ce28d187..4947a117cc 100644 --- a/packages/sdk/cloudflare/rollup.config.ts +++ b/packages/sdk/cloudflare/rollup.config.ts @@ -1,4 +1,3 @@ -/* eslint-disable import/no-extraneous-dependencies */ import commonjs from '@rollup/plugin-commonjs'; import json from '@rollup/plugin-json'; import resolve from '@rollup/plugin-node-resolve'; diff --git a/packages/sdk/cloudflare/src/index.ts b/packages/sdk/cloudflare/src/index.ts index 5236c85abb..7aa051b975 100644 --- a/packages/sdk/cloudflare/src/index.ts +++ b/packages/sdk/cloudflare/src/index.ts @@ -10,7 +10,6 @@ */ import type { KVNamespace } from '@cloudflare/workers-types'; -// eslint-disable-next-line import/no-extraneous-dependencies import { BasicLogger, EdgeFeatureStore, @@ -21,7 +20,6 @@ import { import createPlatformInfo from './createPlatformInfo'; -// eslint-disable-next-line import/no-extraneous-dependencies export * from '@launchdarkly/js-server-sdk-common-edge'; export type { LDClient }; From e5f92bc2a093d1e0907d219a31804128a89e8390 Mon Sep 17 00:00:00 2001 From: Yusinto Ngadiman Date: Thu, 21 Sep 2023 13:03:57 -0700 Subject: [PATCH 14/14] fix: replace proprietary email with fake emails. added more tests for example app. improve example test structure. --- .../sdk/cloudflare/example/src/index.test.ts | 25 ++++++++++++------- packages/sdk/cloudflare/example/src/index.ts | 7 ++++-- .../sdk/cloudflare/example/src/testData.json | 2 +- packages/sdk/cloudflare/src/index.test.ts | 2 +- packages/sdk/cloudflare/src/testData.json | 2 +- 5 files changed, 24 insertions(+), 14 deletions(-) diff --git a/packages/sdk/cloudflare/example/src/index.test.ts b/packages/sdk/cloudflare/example/src/index.test.ts index 2c11ecb3c8..0ada182361 100644 --- a/packages/sdk/cloudflare/example/src/index.test.ts +++ b/packages/sdk/cloudflare/example/src/index.test.ts @@ -1,15 +1,22 @@ import app from './index'; import testData from './testData.json'; -test('variation true', async () => { - // arrange - const env = getMiniflareBindings(); - const { LD_KV } = env; - await LD_KV.put('LD-Env-test-sdk-key', JSON.stringify(testData)); +describe('test', () => { + let env: Bindings; - // act - const res = await app.fetch(new Request('http://localhost'), env); + beforeEach(async () => { + env = getMiniflareBindings(); + const { LD_KV } = env; + await LD_KV.put('LD-Env-test-sdk-key', JSON.stringify(testData)); + }); - // assert - expect(await res.text()).toContain('testFlag1: true'); + test('variation true', async () => { + const res = await app.fetch(new Request('http://localhost/?email=truemail'), env); + expect(await res.text()).toContain('testFlag1: true'); + }); + + test('variation false', async () => { + const res = await app.fetch(new Request('http://localhost/?email=falsemail'), env); + expect(await res.text()).toContain('testFlag1: false'); + }); }); diff --git a/packages/sdk/cloudflare/example/src/index.ts b/packages/sdk/cloudflare/example/src/index.ts index d25ac65558..11d785ed3b 100644 --- a/packages/sdk/cloudflare/example/src/index.ts +++ b/packages/sdk/cloudflare/example/src/index.ts @@ -4,8 +4,11 @@ export default { async fetch(request: Request, env: Bindings): Promise { const sdkKey = 'test-sdk-key'; const flagKey = 'testFlag1'; - // gmail will return false, other emails return true - const context = { kind: 'user', key: 'test-user-key-1', email: 'test@hotmail.com' }; + const { searchParams } = new URL(request.url); + + // falsemail will return false, other emails return true + const email = searchParams.get('email') ?? 'test@anymail.com'; + const context = { kind: 'user', key: 'test-user-key-1', email }; // start using ld const client = initLD(sdkKey, env.LD_KV); diff --git a/packages/sdk/cloudflare/example/src/testData.json b/packages/sdk/cloudflare/example/src/testData.json index 495819a24d..d4fbacd7bb 100644 --- a/packages/sdk/cloudflare/example/src/testData.json +++ b/packages/sdk/cloudflare/example/src/testData.json @@ -14,7 +14,7 @@ "contextKind": "user", "attribute": "/email", "op": "contains", - "values": ["gmail"], + "values": ["falsemail"], "negate": false } ], diff --git a/packages/sdk/cloudflare/src/index.test.ts b/packages/sdk/cloudflare/src/index.test.ts index baeed982fb..978d525d63 100644 --- a/packages/sdk/cloudflare/src/index.test.ts +++ b/packages/sdk/cloudflare/src/index.test.ts @@ -51,7 +51,7 @@ describe('init', () => { }); test('rule match', async () => { - const contextWithEmail = { ...context, email: 'test@gmail.com' }; + const contextWithEmail = { ...context, email: 'test@falsemail.com' }; const value = await ldClient.variation(flagKey1, contextWithEmail, false); const detail = await ldClient.variationDetail(flagKey1, contextWithEmail, false); diff --git a/packages/sdk/cloudflare/src/testData.json b/packages/sdk/cloudflare/src/testData.json index b9e5296c03..f4b0b3e3fb 100644 --- a/packages/sdk/cloudflare/src/testData.json +++ b/packages/sdk/cloudflare/src/testData.json @@ -14,7 +14,7 @@ "contextKind": "user", "attribute": "/email", "op": "contains", - "values": ["gmail"], + "values": ["falsemail"], "negate": false } ],