@smartive/datocms-utils 1.4.1 → 1.6.0

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/CHANGELOG.md CHANGED
@@ -1,6 +1,6 @@
1
- ## [1.4.1](https://github.com/smartive/datocms-utils/compare/v1.4.0...v1.4.1) (2024-12-16)
1
+ # [1.6.0](https://github.com/smartive/datocms-utils/compare/v1.5.0...v1.6.0) (2025-02-07)
2
2
 
3
3
 
4
- ### Bug Fixes
4
+ ### Features
5
5
 
6
- * **deps:** update dependency graphql to v16.10.0 ([#43](https://github.com/smartive/datocms-utils/issues/43)) ([e45f668](https://github.com/smartive/datocms-utils/commit/e45f668fbfc7ad0d4e614475a97896e0ae7782f5))
6
+ * add getTelLink utility ([#61](https://github.com/smartive/datocms-utils/issues/61)) ([31044d9](https://github.com/smartive/datocms-utils/commit/31044d91f9d47736a2ca254501eb5d11dc6998a8))
package/README.md CHANGED
@@ -37,6 +37,7 @@ CREATE TABLE IF NOT EXISTS query_cache_tags (
37
37
  ### Other Utilities
38
38
 
39
39
  - `classNames`: Cleans and joins an array of inputs with possible undefined or boolean values. Useful for tailwind classnames.
40
+ - `getTelLink`: Formats a phone number to a tel link.
40
41
 
41
42
  ### Types
42
43
 
@@ -36,3 +36,7 @@ export declare const queriesReferencingCacheTags: (cacheTags: CacheTag[]) => Pro
36
36
  * @param {string} queryId Unique query ID
37
37
  */
38
38
  export declare const deleteQueries: (queryIds: string[]) => Promise<void>;
39
+ /**
40
+ * Wipes out all cache tags from the database.
41
+ */
42
+ export declare function truncateCacheTags(): Promise<void>;
@@ -63,4 +63,10 @@ export const deleteQueries = async (queryIds) => {
63
63
  }
64
64
  await sql.query(`DELETE FROM query_cache_tags WHERE query_id IN (${queryIds.map((id) => `'${id}'`).join(', ')})`);
65
65
  };
66
+ /**
67
+ * Wipes out all cache tags from the database.
68
+ */
69
+ export async function truncateCacheTags() {
70
+ await sql.query('DELETE FROM query_cache_tags');
71
+ }
66
72
  //# sourceMappingURL=cache-tags.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache-tags.js","sourceRoot":"","sources":["../src/cache-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAgB,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;GAMG;AAEH,MAAM,UAAU,6BAA6B,CAAC,MAAsB;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAe,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAuB,QAAsB,EAAE,SAAsB,EAAU,EAAE;IAC9G,OAAO,UAAU,CAAC,MAAM,CAAC;SACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAqB,EAAE,EAAE;IAClF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,CAAC,KAAK,CACb,uCAAuC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,OAAO,OAAO,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,yBAAyB,CACpI,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAAE,SAAqB,EAAqB,EAAE;IAC5F,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAqC,MAAM,GAAG,CAAC,KAAK,CAChE,sEAAsE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjI,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;;;GAIG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IACxD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,GAAG,CAAC,KAAK,CAAC,mDAAmD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpH,CAAC,CAAC"}
1
+ {"version":3,"file":"cache-tags.js","sourceRoot":"","sources":["../src/cache-tags.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAgB,KAAK,EAAE,MAAM,SAAS,CAAC;AAG9C;;;;;;GAMG;AAEH,MAAM,UAAU,6BAA6B,CAAC,MAAsB;IAClE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAe,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAuB,QAAsB,EAAE,SAAsB,EAAU,EAAE;IAC9G,OAAO,UAAU,CAAC,MAAM,CAAC;SACtB,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SACvB,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;SACvC,MAAM,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,OAAe,EAAE,SAAqB,EAAE,EAAE;IAClF,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,GAAG,CAAC,KAAK,CACb,uCAAuC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,KAAK,OAAO,OAAO,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,yBAAyB,CACpI,CAAC;AACJ,CAAC,CAAC;AAEF;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,2BAA2B,GAAG,KAAK,EAAE,SAAqB,EAAqB,EAAE;IAC5F,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAqC,MAAM,GAAG,CAAC,KAAK,CAChE,sEAAsE,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CACjI,CAAC;IAEF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF;;;;GAIG;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAAE,QAAkB,EAAE,EAAE;IACxD,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QACtB,OAAO;IACT,CAAC;IACD,MAAM,GAAG,CAAC,KAAK,CAAC,mDAAmD,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpH,CAAC,CAAC;AAEF;;GAEG;AAEH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,MAAM,GAAG,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;AAClD,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './cache-tags';
2
2
  export * from './classnames';
3
+ export * from './links';
3
4
  export * from './types';
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  export * from './cache-tags';
2
2
  export * from './classnames';
3
+ export * from './links';
3
4
  export * from './types';
4
5
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Converts a phone number into a `tel:` link.
3
+ *
4
+ * @param phoneNumber Phone number
5
+ * @returns `tel:` link for the phone number
6
+ */
7
+ export declare const getTelLink: (phoneNumber: string) => string;
package/dist/links.js ADDED
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Converts a phone number into a `tel:` link.
3
+ *
4
+ * @param phoneNumber Phone number
5
+ * @returns `tel:` link for the phone number
6
+ */
7
+ export const getTelLink = (phoneNumber) => {
8
+ if (typeof phoneNumber !== 'string') {
9
+ throw new Error('Phone number must be a string.');
10
+ }
11
+ // Remove non-digit characters except for '+' which is used for international numbers
12
+ const cleanedPhoneNumber = phoneNumber.replace(/[^\d+]/g, '');
13
+ return `tel:${cleanedPhoneNumber}`;
14
+ };
15
+ //# sourceMappingURL=links.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"links.js","sourceRoot":"","sources":["../src/links.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,WAAmB,EAAU,EAAE;IACxD,IAAI,OAAO,WAAW,KAAK,QAAQ,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,qFAAqF;IACrF,MAAM,kBAAkB,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAE9D,OAAO,OAAO,kBAAkB,EAAE,CAAC;AACrC,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartive/datocms-utils",
3
- "version": "1.4.1",
3
+ "version": "1.6.0",
4
4
  "description": "A set of utilities and helpers to work with DatoCMS in a Next.js project.",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/index.js",
@@ -20,10 +20,10 @@
20
20
  "license": "MIT",
21
21
  "devDependencies": {
22
22
  "@semantic-release/changelog": "6.0.3",
23
- "@semantic-release/commit-analyzer": "13.0.0",
23
+ "@semantic-release/commit-analyzer": "13.0.1",
24
24
  "@semantic-release/gitlab": "^13.2.1",
25
25
  "@semantic-release/npm": "12.0.1",
26
- "@semantic-release/release-notes-generator": "14.0.1",
26
+ "@semantic-release/release-notes-generator": "14.0.3",
27
27
  "@smartive/eslint-config": "^6.4.0",
28
28
  "@smartive/prettier-config": "^3.1.2",
29
29
  "@types/node": "^22.7.0",
package/src/cache-tags.ts CHANGED
@@ -81,3 +81,11 @@ export const deleteQueries = async (queryIds: string[]) => {
81
81
  }
82
82
  await sql.query(`DELETE FROM query_cache_tags WHERE query_id IN (${queryIds.map((id) => `'${id}'`).join(', ')})`);
83
83
  };
84
+
85
+ /**
86
+ * Wipes out all cache tags from the database.
87
+ */
88
+
89
+ export async function truncateCacheTags() {
90
+ await sql.query('DELETE FROM query_cache_tags');
91
+ }
package/src/index.ts CHANGED
@@ -1,3 +1,4 @@
1
1
  export * from './cache-tags';
2
2
  export * from './classnames';
3
+ export * from './links';
3
4
  export * from './types';
package/src/links.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Converts a phone number into a `tel:` link.
3
+ *
4
+ * @param phoneNumber Phone number
5
+ * @returns `tel:` link for the phone number
6
+ */
7
+
8
+ export const getTelLink = (phoneNumber: string): string => {
9
+ if (typeof phoneNumber !== 'string') {
10
+ throw new Error('Phone number must be a string.');
11
+ }
12
+
13
+ // Remove non-digit characters except for '+' which is used for international numbers
14
+ const cleanedPhoneNumber = phoneNumber.replace(/[^\d+]/g, '');
15
+
16
+ return `tel:${cleanedPhoneNumber}`;
17
+ };