diff --git a/package.json b/package.json index 6971e29..314cb0d 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,6 @@ "buffer": "^6.0.3", "create-hash": "^1.2.0", "process": "^0.11.10", - "snake-case": "^3.0.4", "stream-browserify": "^3.0.0", "url-safe-base64": "^1.1.1" }, diff --git a/sample/yarn.lock b/sample/yarn.lock index 7705043..32f5b96 100644 --- a/sample/yarn.lock +++ b/sample/yarn.lock @@ -72,7 +72,6 @@ __metadata: buffer: "npm:^6.0.3" create-hash: "npm:^1.2.0" process: "npm:^0.11.10" - snake-case: "npm:^3.0.4" stream-browserify: "npm:^3.0.0" url-safe-base64: "npm:^1.1.1" languageName: node @@ -4539,16 +4538,6 @@ __metadata: languageName: node linkType: hard -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd - languageName: node - linkType: hard - "snapdragon-node@npm:^2.0.1": version: 2.1.1 resolution: "snapdragon-node@npm:2.1.1" diff --git a/src/helper.ts b/src/helper.ts index 2e2b5f0..6c3c0f2 100644 --- a/src/helper.ts +++ b/src/helper.ts @@ -1,6 +1,5 @@ declare const __VERSION__: string; -import { snakeCase } from 'snake-case'; import createHash from 'create-hash'; import { encode } from 'url-safe-base64'; import { v4 as uuid } from 'uuid'; @@ -19,6 +18,7 @@ import { } from './typings'; import { MY_ACCOUNT_DOMAINS } from './server-paths'; import type { QueryData } from './api/open-service-url'; +import { snakeCase } from './snakeCase'; export function constructScopes(scopes: Scopes = ''): string | undefined { return (Array.isArray(scopes) ? scopes.join(' ') : scopes) || undefined; diff --git a/src/snakeCase.ts b/src/snakeCase.ts new file mode 100644 index 0000000..918edae --- /dev/null +++ b/src/snakeCase.ts @@ -0,0 +1,13 @@ +type SnakeCase = S extends `${infer Head}${infer Tail}` + ? Head extends Uppercase + ? `_${Lowercase}${SnakeCase}` + : `${Head}${SnakeCase}` + : S; + +/** + * Converts a camelCase string to snake_case string. + * e.g., "testString" -> "test_string" + */ +export function snakeCase(str: S): SnakeCase { + return str.replace(/[A-Z]/g, (letter) => `_${letter.toLowerCase()}`) as SnakeCase; +} diff --git a/yarn.lock b/yarn.lock index b35bd84..a704090 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1430,7 +1430,6 @@ __metadata: jest-fetch-mock: "npm:^3.0.3" prettier: "npm:^2.3.0" process: "npm:^0.11.10" - snake-case: "npm:^3.0.4" stream-browserify: "npm:^3.0.0" ts-jest: "npm:^27" ts-loader: "npm:^9" @@ -4075,16 +4074,6 @@ __metadata: languageName: node linkType: hard -"dot-case@npm:^3.0.4": - version: 3.0.4 - resolution: "dot-case@npm:3.0.4" - dependencies: - no-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 10c0/5b859ea65097a7ea870e2c91b5768b72ddf7fa947223fd29e167bcdff58fe731d941c48e47a38ec8aa8e43044c8fbd15cd8fa21689a526bc34b6548197cd5b05 - languageName: node - linkType: hard - "dot-prop@npm:^5.1.0, dot-prop@npm:^5.2.0": version: 5.3.0 resolution: "dot-prop@npm:5.3.0" @@ -6864,15 +6853,6 @@ __metadata: languageName: node linkType: hard -"lower-case@npm:^2.0.2": - version: 2.0.2 - resolution: "lower-case@npm:2.0.2" - dependencies: - tslib: "npm:^2.0.3" - checksum: 10c0/3d925e090315cf7dc1caa358e0477e186ffa23947740e4314a7429b6e62d72742e0bbe7536a5ae56d19d7618ce998aba05caca53c2902bd5742fdca5fc57fd7b - languageName: node - linkType: hard - "lowercase-keys@npm:^1.0.0, lowercase-keys@npm:^1.0.1": version: 1.0.1 resolution: "lowercase-keys@npm:1.0.1" @@ -7293,16 +7273,6 @@ __metadata: languageName: node linkType: hard -"no-case@npm:^3.0.4": - version: 3.0.4 - resolution: "no-case@npm:3.0.4" - dependencies: - lower-case: "npm:^2.0.2" - tslib: "npm:^2.0.3" - checksum: 10c0/8ef545f0b3f8677c848f86ecbd42ca0ff3cd9dd71c158527b344c69ba14710d816d8489c746b6ca225e7b615108938a0bda0a54706f8c255933703ac1cf8e703 - languageName: node - linkType: hard - "node-fetch@npm:^2.6.0, node-fetch@npm:^2.7.0": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" @@ -8734,16 +8704,6 @@ __metadata: languageName: node linkType: hard -"snake-case@npm:^3.0.4": - version: 3.0.4 - resolution: "snake-case@npm:3.0.4" - dependencies: - dot-case: "npm:^3.0.4" - tslib: "npm:^2.0.3" - checksum: 10c0/ab19a913969f58f4474fe9f6e8a026c8a2142a01f40b52b79368068343177f818cdfef0b0c6b9558f298782441d5ca8ed5932eb57822439fad791d866e62cecd - languageName: node - linkType: hard - "source-map-resolve@npm:^0.6.0": version: 0.6.0 resolution: "source-map-resolve@npm:0.6.0" @@ -9436,13 +9396,6 @@ __metadata: languageName: node linkType: hard -"tslib@npm:^2.0.3": - version: 2.2.0 - resolution: "tslib@npm:2.2.0" - checksum: 10c0/62c705c4d73bcafa3e191df21ed8f024497b61f0e97c3f3e864ae51bcc98d31b830f73ab94b12f7c0dbd2e8f26af759cb521dd61ae88793f0f2abc32b43599a3 - languageName: node - linkType: hard - "tsutils@npm:^3.21.0": version: 3.21.0 resolution: "tsutils@npm:3.21.0"