@sqlrooms/utils 0.16.2 → 0.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/str.d.ts.map +1 -1
- package/dist/str.js +5 -1
- package/dist/str.js.map +1 -1
- package/package.json +5 -4
- package/dist/filepaths.test.d.ts +0 -2
- package/dist/filepaths.test.d.ts.map +0 -1
- package/dist/filepaths.test.js +0 -43
- package/dist/filepaths.test.js.map +0 -1
package/dist/str.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"str.d.ts","sourceRoot":"","sources":["../src/str.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"str.d.ts","sourceRoot":"","sources":["../src/str.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgBjD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAqB1D;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAE9C"}
|
package/dist/str.js
CHANGED
|
@@ -30,11 +30,15 @@ export function formatBytes(bytes) {
|
|
|
30
30
|
*/
|
|
31
31
|
export function camelCaseToTitle(camelCase) {
|
|
32
32
|
// Split the string into words on the camelCase boundaries
|
|
33
|
-
const words = camelCase.match(
|
|
33
|
+
const words = camelCase.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+/g);
|
|
34
34
|
// If words are found, transform them and join into a title string
|
|
35
35
|
if (words) {
|
|
36
36
|
return words
|
|
37
37
|
.map((word) => {
|
|
38
|
+
// Preserve fully uppercase words like "URL"
|
|
39
|
+
if (word === word.toUpperCase()) {
|
|
40
|
+
return word;
|
|
41
|
+
}
|
|
38
42
|
// Capitalize the first letter of each word
|
|
39
43
|
return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();
|
|
40
44
|
})
|
package/dist/str.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"str.js","sourceRoot":"","sources":["../src/str.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAExE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,IAAI,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,+EAA+E;IAC/E,SAAS;QACP,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAChC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5B,OAAO,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,0DAA0D;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"str.js","sourceRoot":"","sources":["../src/str.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAElC,MAAM,CAAC,GAAG,IAAI,CAAC;IACf,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IAExE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEpD,IAAI,SAAS,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,+EAA+E;IAC/E,SAAS;QACP,SAAS,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAChC,CAAC,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAE5B,OAAO,SAAS,GAAG,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,0DAA0D;IAC1D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/D,kEAAkE;IAClE,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,KAAK;aACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,4CAA4C;YAC5C,IAAI,IAAI,KAAK,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBAChC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,2CAA2C;YAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QACpE,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,4BAA4B;IAC5C,CAAC;IAED,2DAA2D;IAC3D,OAAO,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,GAAW;IACpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC","sourcesContent":["/**\n * Formats a number of bytes into a human-readable string with appropriate size units.\n * @param bytes - The number of bytes to format\n * @returns A string representation of the bytes with appropriate unit (Bytes, KB, MB, etc.)\n * @example\n * formatBytes(1024) // returns \"1 KB\"\n * formatBytes(1234567) // returns \"1.18 MB\"\n */\nexport function formatBytes(bytes: number): string {\n if (bytes === 0) return '0 Bytes';\n\n const k = 1024;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n let sizeValue = bytes / Math.pow(k, i);\n // Use floor to check if there's a non-zero fractional part, format accordingly\n sizeValue =\n sizeValue != Math.floor(sizeValue)\n ? parseFloat(sizeValue.toFixed(2))\n : Math.floor(sizeValue);\n\n return sizeValue + ' ' + sizes[i];\n}\n\n/**\n * Converts a camelCase string into a Title Case string.\n * @param camelCase - The camelCase string to convert\n * @returns A Title Case string with spaces between words\n * @example\n * camelCaseToTitle(\"myVariableName\") // returns \"My Variable Name\"\n * camelCaseToTitle(\"URL\") // returns \"URL\"\n */\nexport function camelCaseToTitle(camelCase: string): string {\n // Split the string into words on the camelCase boundaries\n const words = camelCase.match(/[A-Z]+(?![a-z])|[A-Z]?[a-z]+/g);\n\n // If words are found, transform them and join into a title string\n if (words) {\n return words\n .map((word) => {\n // Preserve fully uppercase words like \"URL\"\n if (word === word.toUpperCase()) {\n return word;\n }\n\n // Capitalize the first letter of each word\n return word.charAt(0).toUpperCase() + word.slice(1).toLowerCase();\n })\n .join(' '); // Join the words with space\n }\n\n // If no words were found, just capitalize the whole string\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n}\n\n/**\n * Capitalizes the first letter of string\n * @param str - The string to capitalize\n * @returns A new string with the first letter capitalized\n * @example\n * capitalize(\"hello world\") // returns \"Hello world\"\n */\nexport function capitalize(str: string): string {\n return str.charAt(0).toUpperCase() + str.slice(1);\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sqlrooms/utils",
|
|
3
|
-
"version": "0.16.
|
|
3
|
+
"version": "0.16.3",
|
|
4
4
|
"main": "dist/index.js",
|
|
5
5
|
"types": "dist/index.d.ts",
|
|
6
6
|
"module": "dist/index.js",
|
|
@@ -20,9 +20,10 @@
|
|
|
20
20
|
"scripts": {
|
|
21
21
|
"dev": "tsc -w",
|
|
22
22
|
"build": "tsc",
|
|
23
|
-
"
|
|
24
|
-
"
|
|
23
|
+
"test": "jest",
|
|
24
|
+
"test:watch": "jest --watch",
|
|
25
25
|
"lint": "eslint .",
|
|
26
|
+
"typecheck": "tsc --noEmit",
|
|
26
27
|
"typedoc": "typedoc"
|
|
27
28
|
},
|
|
28
29
|
"dependencies": {
|
|
@@ -43,5 +44,5 @@
|
|
|
43
44
|
"react": ">=18",
|
|
44
45
|
"react-dom": ">=18"
|
|
45
46
|
},
|
|
46
|
-
"gitHead": "
|
|
47
|
+
"gitHead": "4f1982b5942627e64d8e251f78f5b07ff6317288"
|
|
47
48
|
}
|
package/dist/filepaths.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filepaths.test.d.ts","sourceRoot":"","sources":["../src/filepaths.test.ts"],"names":[],"mappings":""}
|
package/dist/filepaths.test.js
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import { generateUniqueName, generateUniquePath, convertToUniqueS3ObjectName, } from './filepaths';
|
|
2
|
-
test('generateUniqueName generates unique table names', () => {
|
|
3
|
-
expect(generateUniqueName('foo', [])).toBe('foo');
|
|
4
|
-
expect(generateUniqueName('foo', ['345'])).toBe('foo');
|
|
5
|
-
expect(generateUniqueName('foo', ['foo_1'])).toBe('foo');
|
|
6
|
-
expect(generateUniqueName('foo', ['foo', 'foo_1'])).toBe('foo_2');
|
|
7
|
-
expect(generateUniqueName('foo_1', ['foo_1'])).toBe('foo_2');
|
|
8
|
-
expect(generateUniqueName('foo_2', ['foo_2'])).toBe('foo_3');
|
|
9
|
-
expect(generateUniqueName('foo', ['foo', 'foo_1', 'foo_2'])).toBe('foo_3');
|
|
10
|
-
expect(generateUniqueName('')).toBe('');
|
|
11
|
-
expect(generateUniqueName('', [''])).toBe('_1');
|
|
12
|
-
expect(generateUniqueName('_', ['_'])).toBe('__1');
|
|
13
|
-
});
|
|
14
|
-
test('generateUniquePath generates unique paths', () => {
|
|
15
|
-
expect(generateUniquePath('/foo/bar.csv', [])).toBe('/foo/bar.csv');
|
|
16
|
-
expect(generateUniquePath('/foo/bar.csv', ['345'])).toBe('/foo/bar.csv');
|
|
17
|
-
expect(generateUniquePath('/foo/bar.csv', ['/foo/bar.csv'])).toBe('/foo/bar_1.csv');
|
|
18
|
-
expect(generateUniquePath('/foo/bar.csv', ['/foo/bar_1.csv'])).toBe('/foo/bar.csv');
|
|
19
|
-
expect(generateUniquePath('/foo/bar.csv', ['/foo/bar.csv', '/foo/bar_1.csv'])).toBe('/foo/bar_2.csv');
|
|
20
|
-
expect(generateUniquePath('/foo/bar.csv', [
|
|
21
|
-
'/foo/bar.csv',
|
|
22
|
-
'/foo/bar_1.csv',
|
|
23
|
-
'/foo/bar_2.csv',
|
|
24
|
-
])).toBe('/foo/bar_3.csv');
|
|
25
|
-
expect(generateUniquePath('/foo/bar_1.csv', ['/foo/bar_1.csv'])).toBe('/foo/bar_2.csv');
|
|
26
|
-
expect(generateUniquePath('/foo/bar_2.csv', ['/foo/bar_2.csv'])).toBe('/foo/bar_3.csv');
|
|
27
|
-
expect(generateUniquePath('/foo', [])).toBe('/foo');
|
|
28
|
-
expect(generateUniquePath('/foo/bar', [])).toBe('/foo/bar');
|
|
29
|
-
expect(generateUniquePath('/foo/bar', ['/foo/bar'])).toBe('/foo/bar_1');
|
|
30
|
-
expect(generateUniquePath('/', [])).toBe('/');
|
|
31
|
-
expect(generateUniquePath('', [])).toBe('');
|
|
32
|
-
expect(generateUniquePath('', [''])).toBe('_1');
|
|
33
|
-
expect(generateUniquePath('_', ['_'])).toBe('__1');
|
|
34
|
-
});
|
|
35
|
-
test('convertToUniqueS3ObjectName works correctly', () => {
|
|
36
|
-
expect(convertToUniqueS3ObjectName('/flows.csv', [])).toBe('_flows.csv');
|
|
37
|
-
expect(convertToUniqueS3ObjectName('&flows.csv', [])).toBe('_flows.csv');
|
|
38
|
-
expect(convertToUniqueS3ObjectName('@flows.csv', [])).toBe('_flows.csv');
|
|
39
|
-
expect(convertToUniqueS3ObjectName('/flows.csv', [])).toBe('_flows.csv');
|
|
40
|
-
expect(convertToUniqueS3ObjectName('flows.csv', ['flows.csv'])).toBe('flows_1.csv');
|
|
41
|
-
expect(convertToUniqueS3ObjectName('flows.csv', ['flows.csv', 'flows_1.csv'])).toBe('flows_2.csv');
|
|
42
|
-
});
|
|
43
|
-
//# sourceMappingURL=filepaths.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"filepaths.test.js","sourceRoot":"","sources":["../src/filepaths.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n generateUniqueName,\n generateUniquePath,\n convertToUniqueS3ObjectName,\n} from './filepaths';\n\ntest('generateUniqueName generates unique table names', () => {\n expect(generateUniqueName('foo', [])).toBe('foo');\n expect(generateUniqueName('foo', ['345'])).toBe('foo');\n expect(generateUniqueName('foo', ['foo_1'])).toBe('foo');\n expect(generateUniqueName('foo', ['foo', 'foo_1'])).toBe('foo_2');\n expect(generateUniqueName('foo_1', ['foo_1'])).toBe('foo_2');\n expect(generateUniqueName('foo_2', ['foo_2'])).toBe('foo_3');\n expect(generateUniqueName('foo', ['foo', 'foo_1', 'foo_2'])).toBe('foo_3');\n expect(generateUniqueName('')).toBe('');\n expect(generateUniqueName('', [''])).toBe('_1');\n expect(generateUniqueName('_', ['_'])).toBe('__1');\n});\n\ntest('generateUniquePath generates unique paths', () => {\n expect(generateUniquePath('/foo/bar.csv', [])).toBe('/foo/bar.csv');\n expect(generateUniquePath('/foo/bar.csv', ['345'])).toBe('/foo/bar.csv');\n expect(generateUniquePath('/foo/bar.csv', ['/foo/bar.csv'])).toBe(\n '/foo/bar_1.csv',\n );\n expect(generateUniquePath('/foo/bar.csv', ['/foo/bar_1.csv'])).toBe(\n '/foo/bar.csv',\n );\n expect(\n generateUniquePath('/foo/bar.csv', ['/foo/bar.csv', '/foo/bar_1.csv']),\n ).toBe('/foo/bar_2.csv');\n expect(\n generateUniquePath('/foo/bar.csv', [\n '/foo/bar.csv',\n '/foo/bar_1.csv',\n '/foo/bar_2.csv',\n ]),\n ).toBe('/foo/bar_3.csv');\n expect(generateUniquePath('/foo/bar_1.csv', ['/foo/bar_1.csv'])).toBe(\n '/foo/bar_2.csv',\n );\n expect(generateUniquePath('/foo/bar_2.csv', ['/foo/bar_2.csv'])).toBe(\n '/foo/bar_3.csv',\n );\n expect(generateUniquePath('/foo', [])).toBe('/foo');\n expect(generateUniquePath('/foo/bar', [])).toBe('/foo/bar');\n expect(generateUniquePath('/foo/bar', ['/foo/bar'])).toBe('/foo/bar_1');\n expect(generateUniquePath('/', [])).toBe('/');\n expect(generateUniquePath('', [])).toBe('');\n expect(generateUniquePath('', [''])).toBe('_1');\n expect(generateUniquePath('_', ['_'])).toBe('__1');\n});\n\ntest('convertToUniqueS3ObjectName works correctly', () => {\n expect(convertToUniqueS3ObjectName('/flows.csv', [])).toBe('_flows.csv');\n expect(convertToUniqueS3ObjectName('&flows.csv', [])).toBe('_flows.csv');\n expect(convertToUniqueS3ObjectName('@flows.csv', [])).toBe('_flows.csv');\n expect(convertToUniqueS3ObjectName('/flows.csv', [])).toBe('_flows.csv');\n expect(convertToUniqueS3ObjectName('flows.csv', ['flows.csv'])).toBe(\n 'flows_1.csv',\n );\n expect(\n convertToUniqueS3ObjectName('flows.csv', ['flows.csv', 'flows_1.csv']),\n ).toBe('flows_2.csv');\n});\n"]}
|