@pixelated-tech/components 3.9.6 → 3.9.10

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.
Files changed (164) hide show
  1. package/README.md +2 -0
  2. package/dist/components/admin/site-health/site-health-axe-core.js +4 -1
  3. package/dist/components/admin/site-health/site-health-uptime.integration.js +21 -2
  4. package/dist/components/config/config.js +3 -0
  5. package/dist/components/general/sitemap.js +2 -2
  6. package/dist/components/general/smartimage.js +1 -1
  7. package/dist/components/{utilities/functions.js → general/utilities.js} +2 -5
  8. package/dist/components/{general → integrations}/contentful.items.components.js +1 -1
  9. package/dist/components/{general → integrations}/flickr.js +1 -1
  10. package/dist/components/{utilities → integrations}/gemini-api.client.js +4 -1
  11. package/dist/components/{utilities → integrations}/gemini-api.server.js +10 -4
  12. package/dist/components/{general → integrations}/google.reviews.components.js +1 -1
  13. package/dist/components/{general → integrations}/instagram.components.js +2 -2
  14. package/dist/components/{general → integrations}/socialcard.js +2 -2
  15. package/dist/components/{general → integrations}/wordpress.components.js +3 -3
  16. package/dist/components/shoppingcart/ebay.components.js +1 -1
  17. package/dist/components/shoppingcart/ebay.functions.js +1 -1
  18. package/dist/components/shoppingcart/shoppingcart.functions.js +1 -1
  19. package/dist/components/sitebuilder/config/ConfigBuilder.js +7 -3
  20. package/dist/components/sitebuilder/form/formfieldvalidations.js +1 -1
  21. package/dist/components/sitebuilder/form/formutils.js +1 -1
  22. package/dist/components/sitebuilder/page/components/PageEngine.js +1 -1
  23. package/dist/components/sitebuilder/page/lib/pageStorageContentful.js +2 -2
  24. package/dist/config/pixelated.config.json.enc +1 -0
  25. package/dist/index.adminserver.js +1 -1
  26. package/dist/index.js +21 -22
  27. package/dist/index.server.js +10 -18
  28. package/dist/scripts/build.sh +86 -0
  29. package/dist/scripts/config-vault.js +24 -9
  30. package/dist/scripts/config-vault.ts +24 -9
  31. package/dist/scripts/release.sh +232 -85
  32. package/dist/scripts/validate-exports.cjs +1 -1
  33. package/dist/scripts/validate-exports.js +1 -1
  34. package/dist/types/components/admin/site-health/site-health-axe-core.d.ts.map +1 -1
  35. package/dist/types/components/admin/site-health/site-health-uptime.integration.d.ts.map +1 -1
  36. package/dist/types/components/config/config.d.ts.map +1 -1
  37. package/dist/types/components/general/schema-blogposting.functions.d.ts +1 -1
  38. package/dist/types/components/general/schema-blogposting.functions.d.ts.map +1 -1
  39. package/dist/types/components/general/sitemap.d.ts.map +1 -1
  40. package/dist/types/components/{utilities/functions.d.ts → general/utilities.d.ts} +1 -2
  41. package/dist/types/components/general/utilities.d.ts.map +1 -0
  42. package/dist/types/components/integrations/calendly.d.ts.map +1 -0
  43. package/dist/types/components/integrations/cloudinary.d.ts.map +1 -0
  44. package/dist/types/components/integrations/contentful.delivery.d.ts.map +1 -0
  45. package/dist/types/components/integrations/contentful.items.components.d.ts.map +1 -0
  46. package/dist/types/components/integrations/contentful.management.d.ts.map +1 -0
  47. package/dist/types/components/{general → integrations}/flickr.d.ts +1 -1
  48. package/dist/types/components/integrations/flickr.d.ts.map +1 -0
  49. package/dist/types/components/integrations/gemini-api.client.d.ts.map +1 -0
  50. package/dist/types/components/integrations/gemini-api.server.d.ts.map +1 -0
  51. package/dist/types/components/integrations/google.reviews.components.d.ts.map +1 -0
  52. package/dist/types/components/integrations/google.reviews.functions.d.ts.map +1 -0
  53. package/dist/types/components/integrations/googleanalytics.d.ts.map +1 -0
  54. package/dist/types/components/integrations/googlemap.d.ts.map +1 -0
  55. package/dist/types/components/integrations/googlesearch.d.ts.map +1 -0
  56. package/dist/types/components/integrations/gravatar.components.d.ts.map +1 -0
  57. package/dist/types/components/integrations/gravatar.functions.d.ts.map +1 -0
  58. package/dist/types/components/integrations/hubspot.components.d.ts.map +1 -0
  59. package/dist/types/components/integrations/instagram.components.d.ts.map +1 -0
  60. package/dist/types/components/{general → integrations}/instagram.functions.d.ts +1 -1
  61. package/dist/types/components/integrations/instagram.functions.d.ts.map +1 -0
  62. package/dist/types/components/integrations/socialcard.d.ts.map +1 -0
  63. package/dist/types/components/integrations/wordpress.components.d.ts.map +1 -0
  64. package/dist/types/components/integrations/wordpress.functions.d.ts.map +1 -0
  65. package/dist/types/components/integrations/yelp.d.ts.map +1 -0
  66. package/dist/types/components/sitebuilder/config/ConfigBuilder.d.ts.map +1 -1
  67. package/dist/types/components/sitebuilder/form/formutils.d.ts +1 -1
  68. package/dist/types/components/sitebuilder/form/formutils.d.ts.map +1 -1
  69. package/dist/types/components/sitebuilder/page/lib/pageStorageContentful.d.ts +1 -1
  70. package/dist/types/components/sitebuilder/page/lib/pageStorageContentful.d.ts.map +1 -1
  71. package/dist/types/index.adminserver.d.ts +1 -1
  72. package/dist/types/index.d.ts +21 -22
  73. package/dist/types/index.server.d.ts +10 -10
  74. package/dist/types/stories/general/contentful.item.stories.d.ts +1 -1
  75. package/dist/types/stories/general/contentful.item.stories.d.ts.map +1 -1
  76. package/dist/types/stories/general/contentful.items.stories.d.ts +1 -1
  77. package/dist/types/stories/general/contentful.items.stories.d.ts.map +1 -1
  78. package/dist/types/stories/general/google.reviews.stories.d.ts +1 -1
  79. package/dist/types/stories/general/google.reviews.stories.d.ts.map +1 -1
  80. package/dist/types/stories/general/googleanalytics.stories.d.ts +1 -1
  81. package/dist/types/stories/general/googleanalytics.stories.d.ts.map +1 -1
  82. package/dist/types/stories/general/googlesearch.stories.d.ts +1 -1
  83. package/dist/types/stories/general/googlesearch.stories.d.ts.map +1 -1
  84. package/dist/types/stories/general/gravatar.stories.d.ts +1 -1
  85. package/dist/types/stories/general/gravatar.stories.d.ts.map +1 -1
  86. package/dist/types/stories/general/instagram.stories.d.ts +1 -1
  87. package/dist/types/stories/general/instagram.stories.d.ts.map +1 -1
  88. package/dist/types/stories/general/socialcard.stories.d.ts +1 -1
  89. package/dist/types/stories/general/socialcard.stories.d.ts.map +1 -1
  90. package/dist/types/stories/general/wordpress.stories.d.ts +1 -1
  91. package/dist/types/stories/general/wordpress.stories.d.ts.map +1 -1
  92. package/dist/types/tests/utilities.test.d.ts +2 -0
  93. package/dist/types/tests/utilities.test.d.ts.map +1 -0
  94. package/package.json +14 -11
  95. package/dist/config/pixelated.config.json +0 -85
  96. package/dist/test/config.mock.js +0 -13
  97. package/dist/test/run-analyzeGitHealth.js +0 -50
  98. package/dist/test/setup.js +0 -46
  99. package/dist/test/test-utils.js +0 -23
  100. package/dist/types/components/general/calendly.d.ts.map +0 -1
  101. package/dist/types/components/general/cloudinary.d.ts.map +0 -1
  102. package/dist/types/components/general/contentful.delivery.d.ts.map +0 -1
  103. package/dist/types/components/general/contentful.items.components.d.ts.map +0 -1
  104. package/dist/types/components/general/contentful.management.d.ts.map +0 -1
  105. package/dist/types/components/general/flickr.d.ts.map +0 -1
  106. package/dist/types/components/general/google.reviews.components.d.ts.map +0 -1
  107. package/dist/types/components/general/google.reviews.functions.d.ts.map +0 -1
  108. package/dist/types/components/general/googleanalytics.d.ts.map +0 -1
  109. package/dist/types/components/general/googlemap.d.ts.map +0 -1
  110. package/dist/types/components/general/googlesearch.d.ts.map +0 -1
  111. package/dist/types/components/general/gravatar.components.d.ts.map +0 -1
  112. package/dist/types/components/general/gravatar.functions.d.ts.map +0 -1
  113. package/dist/types/components/general/hubspot.components.d.ts.map +0 -1
  114. package/dist/types/components/general/instagram.components.d.ts.map +0 -1
  115. package/dist/types/components/general/instagram.functions.d.ts.map +0 -1
  116. package/dist/types/components/general/socialcard.d.ts.map +0 -1
  117. package/dist/types/components/general/wordpress.components.d.ts.map +0 -1
  118. package/dist/types/components/general/wordpress.functions.d.ts.map +0 -1
  119. package/dist/types/components/general/yelp.d.ts.map +0 -1
  120. package/dist/types/components/utilities/functions.d.ts.map +0 -1
  121. package/dist/types/components/utilities/gemini-api.client.d.ts.map +0 -1
  122. package/dist/types/components/utilities/gemini-api.server.d.ts.map +0 -1
  123. package/dist/types/tests/functions.test.d.ts +0 -2
  124. package/dist/types/tests/functions.test.d.ts.map +0 -1
  125. /package/dist/components/{general → integrations}/calendly.js +0 -0
  126. /package/dist/components/{general → integrations}/cloudinary.js +0 -0
  127. /package/dist/components/{general → integrations}/contentful.delivery.js +0 -0
  128. /package/dist/components/{general → integrations}/contentful.items.css +0 -0
  129. /package/dist/components/{general → integrations}/contentful.management.js +0 -0
  130. /package/dist/components/{general → integrations}/google.reviews.css +0 -0
  131. /package/dist/components/{general → integrations}/google.reviews.functions.js +0 -0
  132. /package/dist/components/{general → integrations}/googleanalytics.js +0 -0
  133. /package/dist/components/{general → integrations}/googlemap.js +0 -0
  134. /package/dist/components/{general → integrations}/googlesearch.css +0 -0
  135. /package/dist/components/{general → integrations}/googlesearch.js +0 -0
  136. /package/dist/components/{general → integrations}/gravatar.components.js +0 -0
  137. /package/dist/components/{general → integrations}/gravatar.css +0 -0
  138. /package/dist/components/{general → integrations}/gravatar.functions.js +0 -0
  139. /package/dist/components/{general → integrations}/hubspot.components.js +0 -0
  140. /package/dist/components/{general → integrations}/instagram.functions.js +0 -0
  141. /package/dist/components/{general → integrations}/socialcard.css +0 -0
  142. /package/dist/components/{general → integrations}/wordpress.css +0 -0
  143. /package/dist/components/{general → integrations}/wordpress.functions.js +0 -0
  144. /package/dist/components/{general → integrations}/yelp.js +0 -0
  145. /package/dist/types/components/{general → integrations}/calendly.d.ts +0 -0
  146. /package/dist/types/components/{general → integrations}/cloudinary.d.ts +0 -0
  147. /package/dist/types/components/{general → integrations}/contentful.delivery.d.ts +0 -0
  148. /package/dist/types/components/{general → integrations}/contentful.items.components.d.ts +0 -0
  149. /package/dist/types/components/{general → integrations}/contentful.management.d.ts +0 -0
  150. /package/dist/types/components/{utilities → integrations}/gemini-api.client.d.ts +0 -0
  151. /package/dist/types/components/{utilities → integrations}/gemini-api.server.d.ts +0 -0
  152. /package/dist/types/components/{general → integrations}/google.reviews.components.d.ts +0 -0
  153. /package/dist/types/components/{general → integrations}/google.reviews.functions.d.ts +0 -0
  154. /package/dist/types/components/{general → integrations}/googleanalytics.d.ts +0 -0
  155. /package/dist/types/components/{general → integrations}/googlemap.d.ts +0 -0
  156. /package/dist/types/components/{general → integrations}/googlesearch.d.ts +0 -0
  157. /package/dist/types/components/{general → integrations}/gravatar.components.d.ts +0 -0
  158. /package/dist/types/components/{general → integrations}/gravatar.functions.d.ts +0 -0
  159. /package/dist/types/components/{general → integrations}/hubspot.components.d.ts +0 -0
  160. /package/dist/types/components/{general → integrations}/instagram.components.d.ts +0 -0
  161. /package/dist/types/components/{general → integrations}/socialcard.d.ts +0 -0
  162. /package/dist/types/components/{general → integrations}/wordpress.components.d.ts +0 -0
  163. /package/dist/types/components/{general → integrations}/wordpress.functions.d.ts +0 -0
  164. /package/dist/types/components/{general → integrations}/yelp.d.ts +0 -0
@@ -7,6 +7,10 @@ import { encrypt, decrypt, isEncrypted } from '../components/config/crypto';
7
7
  * Usage:
8
8
  * npx tsx src/scripts/config-vault.js encrypt <filePath> <key>
9
9
  * npx tsx src/scripts/config-vault.js decrypt <filePath> <key>
10
+ *
11
+ * Behavior changes:
12
+ * - `encrypt` writes to `<file>.enc` (does not overwrite the plain file)
13
+ * - `decrypt` writes atomically to the plain filename (when given a `.enc` file it writes to the base name)
10
14
  */
11
15
  const [, , command, targetPath, argKey] = process.argv;
12
16
  let key = argKey || process.env.PIXELATED_CONFIG_KEY;
@@ -23,8 +27,8 @@ if (!key) {
23
27
  }
24
28
  if (!command || !targetPath || !key) {
25
29
  console.log('Usage:');
26
- console.log(' encrypt <filePath> [key] - Encrypts the file in place');
27
- console.log(' decrypt <filePath> [key] - Decrypts the file in place');
30
+ console.log(' encrypt <filePath> [key] - Encrypts the file and writes `<filePath>.enc`');
31
+ console.log(' decrypt <filePath> [key] - Decrypts the file and writes the plaintext file (atomic write)');
28
32
  console.log('\nNote: Key can be passed as argument or via PIXELATED_CONFIG_KEY env var.');
29
33
  process.exit(1);
30
34
  }
@@ -33,25 +37,36 @@ if (!fs.existsSync(fullPath)) {
33
37
  console.error(`File not found: ${fullPath}`);
34
38
  process.exit(1);
35
39
  }
36
- const content = fs.readFileSync(fullPath, 'utf8');
40
+ const atomicWrite = (destPath, data) => {
41
+ const dir = path.dirname(destPath);
42
+ const base = path.basename(destPath);
43
+ const tmp = path.join(dir, `.${base}.tmp`);
44
+ fs.writeFileSync(tmp, data, 'utf8');
45
+ fs.renameSync(tmp, destPath);
46
+ };
37
47
  try {
38
48
  if (command === 'encrypt') {
49
+ const content = fs.readFileSync(fullPath, 'utf8');
39
50
  if (isEncrypted(content)) {
40
- console.log('File is already encrypted.');
51
+ console.log('File is already encrypted. No action taken.');
41
52
  process.exit(0);
42
53
  }
43
54
  const encrypted = encrypt(content, key);
44
- fs.writeFileSync(fullPath, encrypted, 'utf8');
45
- console.log(`Successfully encrypted ${targetPath}`);
55
+ const encPath = fullPath.endsWith('.enc') ? fullPath : `${fullPath}.enc`;
56
+ atomicWrite(encPath, encrypted);
57
+ console.log(`Successfully encrypted ${targetPath} -> ${path.basename(encPath)}`);
46
58
  }
47
59
  else if (command === 'decrypt') {
60
+ const content = fs.readFileSync(fullPath, 'utf8');
48
61
  if (!isEncrypted(content)) {
49
- console.log('File is not encrypted.');
62
+ console.log('File is not encrypted. No action taken.');
50
63
  process.exit(0);
51
64
  }
52
65
  const decrypted = decrypt(content, key);
53
- fs.writeFileSync(fullPath, decrypted, 'utf8');
54
- console.log(`Successfully decrypted ${targetPath}`);
66
+ // Destination: if input ends with .enc, strip it; otherwise overwrite the provided path
67
+ const destPath = fullPath.endsWith('.enc') ? fullPath.slice(0, -4) : fullPath;
68
+ atomicWrite(destPath, decrypted);
69
+ console.log(`Successfully decrypted ${path.basename(fullPath)} -> ${path.basename(destPath)}`);
55
70
  }
56
71
  else {
57
72
  console.error(`Unknown command: ${command}`);
@@ -8,6 +8,10 @@ import { encrypt, decrypt, isEncrypted } from '../components/config/crypto';
8
8
  * Usage:
9
9
  * npx tsx src/scripts/config-vault.js encrypt <filePath> <key>
10
10
  * npx tsx src/scripts/config-vault.js decrypt <filePath> <key>
11
+ *
12
+ * Behavior changes:
13
+ * - `encrypt` writes to `<file>.enc` (does not overwrite the plain file)
14
+ * - `decrypt` writes atomically to the plain filename (when given a `.enc` file it writes to the base name)
11
15
  */
12
16
 
13
17
  const [,, command, targetPath, argKey] = process.argv;
@@ -27,8 +31,8 @@ if (!key) {
27
31
 
28
32
  if (!command || !targetPath || !key) {
29
33
  console.log('Usage:');
30
- console.log(' encrypt <filePath> [key] - Encrypts the file in place');
31
- console.log(' decrypt <filePath> [key] - Decrypts the file in place');
34
+ console.log(' encrypt <filePath> [key] - Encrypts the file and writes `<filePath>.enc`');
35
+ console.log(' decrypt <filePath> [key] - Decrypts the file and writes the plaintext file (atomic write)');
32
36
  console.log('\nNote: Key can be passed as argument or via PIXELATED_CONFIG_KEY env var.');
33
37
  process.exit(1);
34
38
  }
@@ -40,25 +44,36 @@ if (!fs.existsSync(fullPath)) {
40
44
  process.exit(1);
41
45
  }
42
46
 
43
- const content = fs.readFileSync(fullPath, 'utf8');
47
+ const atomicWrite = (destPath: string, data: string) => {
48
+ const dir = path.dirname(destPath);
49
+ const base = path.basename(destPath);
50
+ const tmp = path.join(dir, `.${base}.tmp`);
51
+ fs.writeFileSync(tmp, data, 'utf8');
52
+ fs.renameSync(tmp, destPath);
53
+ };
44
54
 
45
55
  try {
46
56
  if (command === 'encrypt') {
57
+ const content = fs.readFileSync(fullPath, 'utf8');
47
58
  if (isEncrypted(content)) {
48
- console.log('File is already encrypted.');
59
+ console.log('File is already encrypted. No action taken.');
49
60
  process.exit(0);
50
61
  }
51
62
  const encrypted = encrypt(content, key);
52
- fs.writeFileSync(fullPath, encrypted, 'utf8');
53
- console.log(`Successfully encrypted ${targetPath}`);
63
+ const encPath = fullPath.endsWith('.enc') ? fullPath : `${fullPath}.enc`;
64
+ atomicWrite(encPath, encrypted);
65
+ console.log(`Successfully encrypted ${targetPath} -> ${path.basename(encPath)}`);
54
66
  } else if (command === 'decrypt') {
67
+ const content = fs.readFileSync(fullPath, 'utf8');
55
68
  if (!isEncrypted(content)) {
56
- console.log('File is not encrypted.');
69
+ console.log('File is not encrypted. No action taken.');
57
70
  process.exit(0);
58
71
  }
59
72
  const decrypted = decrypt(content, key);
60
- fs.writeFileSync(fullPath, decrypted, 'utf8');
61
- console.log(`Successfully decrypted ${targetPath}`);
73
+ // Destination: if input ends with .enc, strip it; otherwise overwrite the provided path
74
+ const destPath = fullPath.endsWith('.enc') ? fullPath.slice(0, -4) : fullPath;
75
+ atomicWrite(destPath, decrypted);
76
+ console.log(`Successfully decrypted ${path.basename(fullPath)} -> ${path.basename(destPath)}`);
62
77
  } else {
63
78
  console.error(`Unknown command: ${command}`);
64
79
  process.exit(1);
@@ -8,6 +8,36 @@ set -e # Exit on any error
8
8
  # Get project name from package.json
9
9
  PROJECT_NAME=$(node -p "require('./package.json').name" 2>/dev/null || echo "unknown-project")
10
10
 
11
+ # Initialize step counter
12
+ STEP_COUNT=1
13
+
14
+ # Function to get current version
15
+ get_current_version() {
16
+ node -p "require('./package.json').version"
17
+ }
18
+
19
+
20
+
21
+ echo ""
22
+ echo "================================================="
23
+ echo "🚀 Starting Release Process for $PROJECT_NAME"
24
+ echo "================================================="
25
+ echo ""
26
+ # Check if we're on dev branch
27
+ current_branch=$(git branch --show-current)
28
+ if [ "$current_branch" != "dev" ]; then
29
+ echo "❌ Error: Must be on dev branch to run this script"
30
+ echo "Current branch: $current_branch"
31
+ echo "Please switch to dev branch: git checkout dev"
32
+ exit 1
33
+ fi
34
+
35
+
36
+
37
+ # Select remote
38
+ echo ""
39
+ echo "🔑 Step $((STEP_COUNT++)): Locating GitHub token in config..."
40
+ echo "================================================="
11
41
  # Function to prompt for remote selection
12
42
  prompt_remote_selection() {
13
43
  echo "Available git remotes:" >&2
@@ -17,10 +47,8 @@ prompt_remote_selection() {
17
47
  echo "$i) $remote" >&2
18
48
  ((i++))
19
49
  done
20
-
21
50
  local choice
22
51
  read -p "Select remote to use (1-${#remotes[@]}): " choice >&2
23
-
24
52
  case $choice in
25
53
  [1-9]|[1-9][0-9])
26
54
  if [ "$choice" -le "${#remotes[@]}" ]; then
@@ -32,80 +60,57 @@ prompt_remote_selection() {
32
60
  *) echo "${remotes[0]}" ;; # Default to first remote
33
61
  esac
34
62
  }
35
-
36
- # Select remote
37
63
  REMOTE_NAME=$(prompt_remote_selection)
38
64
 
39
- echo ""
40
- echo "🚀 Starting Release Process for $PROJECT_NAME"
41
- echo "================================================="
42
- echo ""
43
65
 
44
- # Function to get current version
45
- get_current_version() {
46
- node -p "require('./package.json').version"
47
- }
48
66
 
49
- # Function to prompt for version bump type
50
- prompt_version_type() {
51
- echo "Current version: $(get_current_version)" >&2
52
- echo "Select version bump type:" >&2
53
- echo "1) patch (x.x.1)" >&2
54
- echo "2) minor (x.1.0)" >&2
55
- echo "3) major (1.x.x)" >&2
56
- echo "4) custom version" >&2
57
- echo "5) no version bump" >&2
58
- read -p "Enter choice (1-5): " choice >&2
59
- case $choice in
60
- 1) version_type="patch" ;;
61
- 2) version_type="minor" ;;
62
- 3) version_type="major" ;;
63
- 4)
64
- read -p "Enter custom version: " custom_version >&2
65
- version_type="$custom_version"
66
- ;;
67
- 5) version_type="none" ;;
68
- *) version_type="patch" ;; # default
69
- esac
70
- }
71
67
 
72
- # Function to prompt for commit message
73
- prompt_commit_message() {
74
- read -p "Enter commit message (or press enter for default): " commit_msg
75
- if [ -z "$commit_msg" ]; then
76
- echo "chore: release $(get_current_version)"
77
- else
78
- echo "$commit_msg"
68
+ # Attempt to source GITHUB token from pixelated config (without printing it)
69
+ # Looks in a few common locations; will decrypt if needed and possible
70
+ echo ""
71
+ echo "🔑 Step $((STEP_COUNT++)): Locating GitHub token in config..."
72
+ echo "================================================="
73
+ GITHUB_TOKEN_SOURCE=""
74
+ config_paths=("src/app/config/pixelated.config.json" "src/config/pixelated.config.json" "src/pixelated.config.json")
75
+ for cfg in "${config_paths[@]}"; do
76
+ if [ -f "$cfg" ]; then
77
+ token=$(node -e "try{const fs=require('fs');const p=process.argv[1];const d=JSON.parse(fs.readFileSync(p,'utf8'));const v=d.GITHUB_TOKEN||(d.github&&d.github.token)||d.github_token||(d.tokens&&d.tokens.github&&d.tokens.github.token); if(v) console.log(v)}catch(e){}" "$cfg" 2>/dev/null || true)
78
+ if [ -n "$token" ]; then
79
+ export GITHUB_TOKEN="$token"
80
+ GITHUB_TOKEN_SOURCE="$cfg"
81
+ echo "✅ GITHUB token loaded from $cfg"
82
+ break
83
+ fi
79
84
  fi
80
- }
81
-
82
- # Function to prompt for publishing
83
- prompt_publish() {
84
- read -p "Do you want to publish to npm? (y/n): " should_publish
85
- if [ "$should_publish" = "y" ] || [ "$should_publish" = "Y" ]; then
86
- echo "yes"
85
+ done
86
+ # If not found and we have config:decrypt available and a key, try to decrypt temporarily
87
+ if [ -z "$GITHUB_TOKEN" ] && grep -q "\"config:decrypt\":" package.json 2>/dev/null; then
88
+ if [ -z "$PIXELATED_CONFIG_KEY" ]; then
89
+ echo "⚠️ PIXELATED_CONFIG_KEY not set; cannot decrypt config to find token"
87
90
  else
88
- echo "no"
91
+ echo "🔓 Decrypting config to locate GitHub token..."
92
+ if npm run config:decrypt; then
93
+ for cfg in "${config_paths[@]}"; do
94
+ if [ -f "$cfg" ]; then
95
+ token=$(node -e "try{const fs=require('fs');const p=process.argv[1];const d=JSON.parse(fs.readFileSync(p,'utf8'));const v=d.GITHUB_TOKEN||(d.github&&d.github.token)||d.github_token||(d.tokens&&d.tokens.github&&d.tokens.github.token); if(v) console.log(v)}catch(e){}" "$cfg" 2>/dev/null || true)
96
+ if [ -n "$token" ]; then
97
+ export GITHUB_TOKEN="$token"
98
+ GITHUB_TOKEN_SOURCE="$cfg"
99
+ echo "✅ GITHUB token loaded from $cfg after decrypt"
100
+ break
101
+ fi
102
+ fi
103
+ done
104
+ else
105
+ echo "❌ config:decrypt failed; cannot load GitHub token"
106
+ fi
89
107
  fi
90
- }
108
+ fi
91
109
 
92
- # Function to prompt for OTP
93
- prompt_otp() {
94
- read -p "Enter npm OTP: " otp
95
- echo "$otp"
96
- }
97
110
 
98
- # Check if we're on dev branch
99
- current_branch=$(git branch --show-current)
100
- if [ "$current_branch" != "dev" ]; then
101
- echo "❌ Error: Must be on dev branch to run this script"
102
- echo "Current branch: $current_branch"
103
- echo "Please switch to dev branch: git checkout dev"
104
- exit 1
105
- fi
106
111
 
107
112
  echo ""
108
- echo "📦 Step 1: Updating dependencies..."
113
+ echo "📦 Step $((STEP_COUNT++)): Updating dependencies..."
109
114
  echo "================================================="
110
115
  UPDATES=$(npm outdated | awk 'NR>1 {print $1"@"$4}' || true)
111
116
  if [ -n "$UPDATES" ]; then
@@ -117,19 +122,88 @@ else
117
122
  fi
118
123
  npm audit fix --force 2>/dev/null || true
119
124
 
125
+
126
+
120
127
  echo ""
121
- echo "🔍 Step 2: Running lint..."
128
+ echo "🔍 Step $((STEP_COUNT++)): Running lint..."
122
129
  echo "================================================="
123
130
  npm run lint
124
131
 
132
+
133
+
125
134
  echo ""
126
- echo "🔨 Step 3: Building project..."
135
+ echo "🔨 Step $((STEP_COUNT++)): Encrypting configuration..."
136
+ echo "================================================="
137
+ if grep -q "\"config:encrypt\":" package.json; then
138
+ echo "🔒 Encrypting configuration..."
139
+ npm run config:encrypt
140
+ echo "✅ Encrypted configuration successfully."
141
+ else
142
+ echo "❌ Encryption failed. Please add config:encrypt script to package.json."
143
+ exit 1
144
+ fi
145
+
146
+
147
+
148
+ echo ""
149
+ echo "🔨 Step $((STEP_COUNT++)): Building project..."
127
150
  echo "================================================="
128
151
  npm run build
129
152
 
153
+ # Post-build: if a dist folder exists, ensure it does NOT contain plaintext config and that the .enc file is present
130
154
  echo ""
131
- echo "🏷️ Step 4: Version bump..."
155
+ echo "🔧 Step $((STEP_COUNT++)): Post-build config check: cleaning dist and verifying .enc..."
132
156
  echo "================================================="
157
+ DIST_DIR="dist"
158
+ PLAIN_DIST_CFG="$DIST_DIR/config/pixelated.config.json"
159
+ ENC_DIST_CFG="$DIST_DIR/config/pixelated.config.json.enc"
160
+
161
+ if [ -d "$DIST_DIR" ]; then
162
+ if [ -f "$PLAIN_DIST_CFG" ]; then
163
+ echo "⚠️ Found plaintext config in dist at $PLAIN_DIST_CFG — removing it to avoid accidental publish."
164
+ rm -f "$PLAIN_DIST_CFG"
165
+ echo "✅ Removed $PLAIN_DIST_CFG"
166
+ else
167
+ echo "ℹ️ No plaintext config found in dist."
168
+ fi
169
+
170
+ if [ -f "$ENC_DIST_CFG" ]; then
171
+ echo "✅ Found encrypted config at $ENC_DIST_CFG"
172
+ else
173
+ echo "❌ Missing encrypted config in dist: $ENC_DIST_CFG. Aborting release."
174
+ exit 1
175
+ fi
176
+ else
177
+ echo "ℹ️ No dist directory found; skipping dist cleanup/verification."
178
+ fi
179
+
180
+
181
+
182
+ echo ""
183
+ echo "🏷️ Step $((STEP_COUNT++)): Version bump..."
184
+ echo "================================================="
185
+ # Function to prompt for version bump type
186
+ prompt_version_type() {
187
+ echo "Current version: $(get_current_version)" >&2
188
+ echo "Select version bump type:" >&2
189
+ echo "1) patch (x.x.1)" >&2
190
+ echo "2) minor (x.1.0)" >&2
191
+ echo "3) major (1.x.x)" >&2
192
+ echo "4) custom version" >&2
193
+ echo "5) no version bump" >&2
194
+ read -p "Enter choice (1-5): " choice >&2
195
+ case $choice in
196
+ 1) version_type="patch" ;;
197
+ 2) version_type="minor" ;;
198
+ 3) version_type="major" ;;
199
+ 4)
200
+ read -p "Enter custom version: " custom_version >&2
201
+ version_type="$custom_version"
202
+ ;;
203
+ 5) version_type="none" ;;
204
+ *) version_type="patch" ;; # default
205
+ esac
206
+ }
133
207
  prompt_version_type
134
208
  if [ "$version_type" != "none" ]; then
135
209
  if [ "$version_type" = "patch" ] || [ "$version_type" = "minor" ] || [ "$version_type" = "major" ]; then
@@ -140,13 +214,20 @@ if [ "$version_type" != "none" ]; then
140
214
  fi
141
215
  fi
142
216
 
217
+
218
+
143
219
  echo ""
144
- echo "💾 Step 5: Committing changes..."
220
+ echo "💾 Step $((STEP_COUNT++)): Committing changes..."
145
221
  echo "================================================="
146
- if grep -q "\"config:encrypt\":" package.json; then
147
- echo "🔒 Encrypting configuration..."
148
- npm run config:encrypt
149
- fi
222
+ # Function to prompt for commit message
223
+ prompt_commit_message() {
224
+ read -p "Enter commit message (or press enter for default): " commit_msg
225
+ if [ -z "$commit_msg" ]; then
226
+ echo "chore: release $(get_current_version)"
227
+ else
228
+ echo "$commit_msg"
229
+ fi
230
+ }
150
231
  commit_message=$(prompt_commit_message)
151
232
  git add . -v
152
233
  if git diff --cached --quiet; then
@@ -155,8 +236,10 @@ else
155
236
  git commit -m "$commit_message"
156
237
  fi
157
238
 
239
+
240
+
158
241
  echo ""
159
- echo "📤 Step 6: Pushing dev branch..."
242
+ echo "📤 Step $((STEP_COUNT++)): Pushing dev branch..."
160
243
  echo "================================================="
161
244
  # Try to push, if it fails due to remote changes, fetch and rebase
162
245
  if ! git push $REMOTE_NAME dev; then
@@ -174,8 +257,10 @@ if ! git push $REMOTE_NAME dev; then
174
257
  fi
175
258
  fi
176
259
 
260
+
261
+
177
262
  echo ""
178
- echo "🔄 Step 7: Updating main branch..."
263
+ echo "🔄 Step $((STEP_COUNT++)): Updating main branch..."
179
264
  echo "================================================="
180
265
  # Force main to match dev exactly
181
266
  git push $REMOTE_NAME dev:main --force
@@ -189,44 +274,106 @@ if git show-ref --verify --quiet refs/heads/main; then
189
274
  git checkout dev
190
275
  fi
191
276
 
277
+
278
+
192
279
  echo ""
193
- echo "🏷️ Step 8: Creating and pushing git tag..."
280
+ echo "🏷️ Step $((STEP_COUNT++)): Creating and pushing git tag and release..."
194
281
  echo "================================================="
195
282
  new_version=$(get_current_version)
196
- if ! git tag -l | grep -q "v$new_version"; then
197
- git tag "v$new_version"
198
- git push $REMOTE_NAME "v$new_version"
283
+ release_tag="v${new_version}"
284
+ # Use commit message as tag/release message when available, otherwise default
285
+ tag_message="${commit_message:-"Release $release_tag"}"
286
+ if ! git tag -l | grep -q "$release_tag"; then
287
+ echo "🔖 Creating annotated tag $release_tag"
288
+ git tag -a "$release_tag" -m "$tag_message"
289
+ git push $REMOTE_NAME "$release_tag"
199
290
  else
200
- echo "ℹ️ Tag v$new_version already exists"
291
+ echo "ℹ️ Tag $release_tag already exists"
201
292
  fi
202
293
 
203
- if grep -q "\"config:decrypt\":" package.json; then
204
- echo "🔓 Decrypting configuration for local development..."
205
- npm run config:decrypt
294
+
295
+
296
+ # Create a published GitHub release for this tag (prefer gh CLI, fallback to API)
297
+ echo ""
298
+ echo "📣 Step $((STEP_COUNT++)): Creating GitHub release..."
299
+ echo "================================================="
300
+ REMOTE_URL=$(git remote get-url $REMOTE_NAME 2>/dev/null || true)
301
+
302
+ # Use GitHub API only (no gh CLI). Ensure GITHUB_TOKEN is present
303
+ if [ -z "$GITHUB_TOKEN" ]; then
304
+ echo "⚠️ GITHUB_TOKEN not set; skipping GitHub release creation via API"
305
+ else
306
+ # Derive owner/repo from remote URL
307
+ repo_path=$(echo "$REMOTE_URL" | sed -E 's#(git@github.com:|https://github.com/)(.+)(\.git)?$#\2#')
308
+ if [ -z "$repo_path" ]; then
309
+ echo "⚠️ Unable to determine repo path from remote URL; skipping API-based release creation"
310
+ else
311
+ # Check if release exists
312
+ if curl -s -H "Authorization: token $GITHUB_TOKEN" "https://api.github.com/repos/$repo_path/releases/tags/$release_tag" | grep -q '"tag_name"'; then
313
+ echo "ℹ️ Release for $release_tag already exists on GitHub (API)."
314
+ else
315
+ echo "🔔 Creating release via GitHub API for $release_tag"
316
+ payload=$(printf '{"tag_name":"%s","name":"%s","body":"%s","draft":false,"prerelease":false}' "$release_tag" "$release_tag" "${tag_message//\"/\\\"}")
317
+ resp=$(curl -s -X POST -H "Authorization: token $GITHUB_TOKEN" -H "Content-Type: application/json" -d "$payload" "https://api.github.com/repos/$repo_path/releases")
318
+ if echo "$resp" | grep -q '"id"'; then
319
+ echo "✅ Created GitHub release $release_tag"
320
+ else
321
+ echo "❌ Failed to create GitHub release: $resp"
322
+ fi
323
+ fi
324
+ fi
206
325
  fi
207
326
 
327
+
328
+
208
329
  echo ""
209
- echo "🔐 Step 9: Publishing to npm..."
330
+ echo "🔐 Step $((STEP_COUNT++)): Publishing to npm..."
210
331
  echo "================================================="
332
+ # Function to prompt for publishing
333
+ prompt_publish() {
334
+ read -p "Do you want to publish to npm? (y/n): " should_publish
335
+ if [ "$should_publish" = "y" ] || [ "$should_publish" = "Y" ]; then
336
+ echo "yes"
337
+ else
338
+ echo "no"
339
+ fi
340
+ }
341
+ # Function to prompt for OTP
342
+ prompt_otp() {
343
+ read -p "Enter npm OTP: " otp
344
+ echo "$otp"
345
+ }
211
346
  should_publish=$(prompt_publish)
212
347
  if [ "$should_publish" = "yes" ]; then
213
348
  npm login
214
349
  otp=$(prompt_otp)
215
- npm publish --access public --otp=$otp
350
+ npm publish --loglevel warn --access public --otp=$otp
216
351
  echo "✅ Successfully published to npm!"
217
352
  else
218
353
  echo "ℹ️ Skipping npm publish"
219
354
  echo "You can publish manually with: npm publish --access public"
220
355
  fi
221
356
 
357
+
358
+
359
+ if grep -q "\"config:decrypt\":" package.json; then
360
+ echo ""
361
+ echo "🔓 Step $((STEP_COUNT++)): Decrypting configuration for local development..."
362
+ echo "================================================="
363
+ npm run config:decrypt
364
+ fi
365
+
366
+
367
+
222
368
  echo ""
223
369
  echo ""
224
370
  echo "================================================="
225
371
  echo "✅ Release complete!"
372
+ echo "================================================="
226
373
  echo "📦 Version: $(get_current_version)"
227
374
  echo "📋 Branches updated: dev, main"
228
375
  echo "🏷️ Tag created: v$(get_current_version)"
229
376
 
230
377
  if [ "$should_publish" = "yes" ]; then
231
378
  echo "🔗 https://www.npmjs.com/package/$PROJECT_NAME"
232
- fi
379
+ fi
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import glob from 'glob';
3
- import { CLIENT_ONLY_PATTERNS, TS_FILE_IGNORE_PATTERNS, TSX_FILE_IGNORE_PATTERNS, SERVER_ONLY_PATTERNS } from '../components/utilities/functions.js';
3
+ import { CLIENT_ONLY_PATTERNS, TS_FILE_IGNORE_PATTERNS, TSX_FILE_IGNORE_PATTERNS, SERVER_ONLY_PATTERNS } from '../components/general/utilities.js';
4
4
 
5
5
  console.log('🔍 Validating exports...\n');
6
6
 
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs';
2
2
  import glob from 'glob';
3
- import { CLIENT_ONLY_PATTERNS, TS_FILE_IGNORE_PATTERNS, TSX_FILE_IGNORE_PATTERNS, SERVER_ONLY_PATTERNS } from '../components/utilities/functions.ts';
3
+ import { CLIENT_ONLY_PATTERNS, TS_FILE_IGNORE_PATTERNS, TSX_FILE_IGNORE_PATTERNS, SERVER_ONLY_PATTERNS } from '../components/general/utilities.js';
4
4
 
5
5
  console.log('🔍 Validating exports...\n');
6
6
 
@@ -1 +1 @@
1
- {"version":3,"file":"site-health-axe-core.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAQnD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAiSpE;yBAjSe,iBAAiB"}
1
+ {"version":3,"file":"site-health-axe-core.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-axe-core.tsx"],"names":[],"mappings":"AAGA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAWnD,MAAM,MAAM,qBAAqB,GAAG,UAAU,CAAC,OAAO,iBAAiB,CAAC,SAAS,CAAC,CAAC;AACnF,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAiSpE;yBAjSe,iBAAiB"}
@@ -1 +1 @@
1
- {"version":3,"file":"site-health-uptime.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-uptime.integration.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA8BzF"}
1
+ {"version":3,"file":"site-health-uptime.integration.d.ts","sourceRoot":"","sources":["../../../../../src/components/admin/site-health/site-health-uptime.integration.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC;IAC5B,IAAI,CAAC,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,iBAAiB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA+CzF"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AAO1E;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CAuDxD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,eAAe,CAIpF"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../../src/components/config/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAsB,MAAM,gBAAgB,CAAC;AAO1E;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,eAAe,CA0DxD;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,eAAe,CAIpF"}
@@ -1,4 +1,4 @@
1
- import type { BlogPostType } from '../general/wordpress.functions';
1
+ import type { BlogPostType } from '../integrations/wordpress.functions';
2
2
  export interface BlogPostingSchema {
3
3
  '@context': string;
4
4
  '@type': string;
@@ -1 +1 @@
1
- {"version":3,"file":"schema-blogposting.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/general/schema-blogposting.functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAGnE,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,YAAY,EAClB,kBAAkB,GAAE,OAAe,GACjC,iBAAiB,CAyCnB"}
1
+ {"version":3,"file":"schema-blogposting.functions.d.ts","sourceRoot":"","sources":["../../../../src/components/general/schema-blogposting.functions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AAGxE,MAAM,WAAW,iBAAiB;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE;QACR,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACxC,IAAI,EAAE,YAAY,EAClB,kBAAkB,GAAE,OAAe,GACjC,iBAAiB,CAyCnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/general/sitemap.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sitemap.d.ts","sourceRoot":"","sources":["../../../../src/components/general/sitemap.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ export declare function html2dom(str: string): ChildNode | null;
2
2
  export declare function mergeDeep(a: any, b: any): {
3
3
  [key: string]: any;
4
4
  };
5
- export declare function pushNewValueToStateArray(that: any, oldState: any, newValue: any): void;
6
5
  export declare function randomBetween(min: number, max: number): number;
7
6
  export declare function generateKey(): string;
8
7
  export declare function generateUUID(): string;
@@ -34,4 +33,4 @@ export declare const TSX_FILE_IGNORE_PATTERNS: string[];
34
33
  * Regex patterns that identify server-only code that should not run on client
35
34
  */
36
35
  export declare const SERVER_ONLY_PATTERNS: RegExp[];
37
- //# sourceMappingURL=functions.d.ts.map
36
+ //# sourceMappingURL=utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.d.ts","sourceRoot":"","sources":["../../../../src/components/general/utilities.ts"],"names":[],"mappings":"AAGA,wBAAgB,QAAQ,CAAE,GAAG,EAAE,MAAM,oBAUpC;AAGD,wBAAgB,SAAS,CAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG;;EAmBxC;AAED,wBAAgB,aAAa,CAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,UAOtD;AAED,wBAAgB,WAAW,WAc1B;AAED,wBAAgB,YAAY,WAK3B;AAED,wBAAgB,UAAU,CAAE,GAAG,EAAE,MAAM,UAEtC;AAQD,wBAAgB,YAAY,CAAE,YAAY,EAAE,MAAM,UAgCjD;AAID;;;;OAII;AACJ,wBAAgB,YAAY,SAoB3B;AAKD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,UA0BhC,CAAC;AAEF;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAE9D;AAGD;;GAEG;AACH,eAAO,MAAM,uBAAuB,UAQnC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAGF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAoBhC,CAAC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendly.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/calendly.tsx"],"names":[],"mappings":"AACA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAOnD,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AACjE,wBAAgB,QAAQ,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,YAAY,2CAmB5D;yBAnBe,QAAQ"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloudinary.d.ts","sourceRoot":"","sources":["../../../../src/components/integrations/cloudinary.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAiBnD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAAE,UA0CxM;AAQD,MAAM,MAAM,+BAA+B,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACvG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,+BAA+B,UAKjF;yBALe,2BAA2B;;;;;;AAQ3C,wBAAgB,YAAY,YAO3B;AAOD,MAAM,MAAM,+BAA+B,GAAG,UAAU,CAAC,OAAO,2BAA2B,CAAC,SAAS,CAAC,CAAC;AACvG,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,+BAA+B,QAqBjF;yBArBe,2BAA2B"}