@mks2508/better-logger 0.0.2-alpha.0 → 0.8.1-alpha.1

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 (230) hide show
  1. package/.github/workflows/ci-quality.yml +356 -0
  2. package/.github/workflows/docs-demo.yml +123 -0
  3. package/.github/workflows/releases-core.yml +448 -0
  4. package/.github/workflows/releases-full.yml +404 -0
  5. package/.github/{workflows → workflows-backup}/ci.yml +14 -100
  6. package/.github/workflows-backup/nightly.yml +196 -0
  7. package/.github/workflows-backup/release-optimized.yml +373 -0
  8. package/.github/{workflows → workflows-backup}/release.yml +22 -1
  9. package/.release-notes-0.2.0.md +129 -0
  10. package/CHANGELOG.json +658 -0
  11. package/README.md +110 -512
  12. package/demo.html +9 -2
  13. package/dist/Logger.d.ts +176 -0
  14. package/dist/Logger.d.ts.map +1 -0
  15. package/dist/Logger.js +498 -0
  16. package/dist/chunks/{Logger-BrFKFZcD.js → Logger-CbCUS5pQ.js} +987 -5
  17. package/dist/chunks/Logger-CbCUS5pQ.js.map +1 -0
  18. package/dist/chunks/Logger-PCfgYKTP.js +2 -0
  19. package/dist/chunks/Logger-PCfgYKTP.js.map +1 -0
  20. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js +33 -0
  21. package/dist/chunks/RemoteLogHandler-CjWpWZGl.js.map +1 -0
  22. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js +2 -0
  23. package/dist/chunks/RemoteLogHandler-ymkQ97xl.js.map +1 -0
  24. package/dist/chunks/StyleBuilder-BoJTmskd.js +361 -0
  25. package/dist/chunks/StyleBuilder-BoJTmskd.js.map +1 -0
  26. package/dist/chunks/StyleBuilder-LPLzsoHY.js +4 -0
  27. package/dist/chunks/StyleBuilder-LPLzsoHY.js.map +1 -0
  28. package/dist/cli/CommandProcessor.d.ts +40 -0
  29. package/dist/cli/CommandProcessor.d.ts.map +1 -0
  30. package/dist/cli/CommandProcessor.js +57 -0
  31. package/dist/cli/commands/ConfigCommand.d.ts +17 -0
  32. package/dist/cli/commands/ConfigCommand.d.ts.map +1 -0
  33. package/dist/cli/commands/ConfigCommand.js +88 -0
  34. package/dist/cli/commands/ExportCommand.d.ts +51 -0
  35. package/dist/cli/commands/ExportCommand.d.ts.map +1 -0
  36. package/dist/cli/commands/ExportCommand.js +243 -0
  37. package/dist/cli/commands/StatusCommand.d.ts +33 -0
  38. package/dist/cli/commands/StatusCommand.d.ts.map +1 -0
  39. package/dist/cli/commands/StatusCommand.js +93 -0
  40. package/dist/cli/commands/ThemeCommand.d.ts +33 -0
  41. package/dist/cli/commands/ThemeCommand.d.ts.map +1 -0
  42. package/dist/cli/commands/ThemeCommand.js +79 -0
  43. package/dist/cli/help.d.ts +15 -0
  44. package/dist/cli/help.d.ts.map +1 -0
  45. package/dist/cli/help.js +118 -0
  46. package/dist/cli/index.d.ts +15 -0
  47. package/dist/cli/index.d.ts.map +1 -0
  48. package/dist/cli/index.js +40 -0
  49. package/dist/constants.d.ts +91 -0
  50. package/dist/constants.d.ts.map +1 -0
  51. package/dist/constants.js +80 -0
  52. package/dist/core.cjs +1 -1
  53. package/dist/core.cjs.map +1 -1
  54. package/dist/core.d.ts +130 -0
  55. package/dist/core.d.ts.map +1 -0
  56. package/dist/core.js +258 -242
  57. package/dist/core.js.map +1 -1
  58. package/dist/example.d.ts +18 -0
  59. package/dist/example.d.ts.map +1 -0
  60. package/dist/example.js +154 -0
  61. package/dist/exports-module.d.ts +203 -0
  62. package/dist/exports-module.d.ts.map +1 -0
  63. package/dist/exports-module.js +260 -0
  64. package/dist/exports.cjs +1 -1
  65. package/dist/exports.cjs.map +1 -1
  66. package/dist/exports.js +2 -2
  67. package/dist/handlers/AnalyticsLogHandler.d.ts +11 -0
  68. package/dist/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  69. package/dist/handlers/AnalyticsLogHandler.js +19 -0
  70. package/dist/handlers/ExportLogHandler.d.ts +103 -0
  71. package/dist/handlers/ExportLogHandler.d.ts.map +1 -0
  72. package/dist/handlers/ExportLogHandler.js +516 -0
  73. package/dist/handlers/FileLogHandler.d.ts +13 -0
  74. package/dist/handlers/FileLogHandler.d.ts.map +1 -0
  75. package/dist/handlers/FileLogHandler.js +24 -0
  76. package/dist/handlers/RemoteLogHandler.d.ts +14 -0
  77. package/dist/handlers/RemoteLogHandler.d.ts.map +1 -0
  78. package/dist/handlers/RemoteLogHandler.js +37 -0
  79. package/dist/handlers/index.d.ts +8 -0
  80. package/dist/handlers/index.d.ts.map +1 -0
  81. package/dist/handlers/index.js +7 -0
  82. package/dist/index.cjs +1 -1
  83. package/dist/index.cjs.map +1 -1
  84. package/dist/index.d.ts +86 -0
  85. package/dist/index.d.ts.map +1 -0
  86. package/dist/index.js +89 -103
  87. package/dist/main.d.ts +2 -0
  88. package/dist/main.d.ts.map +1 -0
  89. package/dist/main.js +139 -0
  90. package/dist/styling/StyleBuilder.d.ts +132 -0
  91. package/dist/styling/StyleBuilder.d.ts.map +1 -0
  92. package/dist/styling/StyleBuilder.js +268 -0
  93. package/dist/styling/banners.d.ts +45 -0
  94. package/dist/styling/banners.d.ts.map +1 -0
  95. package/dist/styling/banners.js +155 -0
  96. package/dist/styling/index.d.ts +7 -0
  97. package/dist/styling/index.d.ts.map +1 -0
  98. package/dist/styling/index.js +6 -0
  99. package/dist/styling/themes.d.ts +10 -0
  100. package/dist/styling/themes.d.ts.map +1 -0
  101. package/dist/styling/themes.js +231 -0
  102. package/dist/styling-module.d.ts +185 -0
  103. package/dist/styling-module.d.ts.map +1 -0
  104. package/dist/styling-module.js +199 -0
  105. package/dist/styling.cjs +1 -1
  106. package/dist/styling.cjs.map +1 -1
  107. package/dist/styling.js +4 -4
  108. package/dist/types/Logger.d.ts +172 -0
  109. package/dist/types/Logger.d.ts.map +1 -0
  110. package/dist/types/cli/CommandProcessor.d.ts +37 -0
  111. package/dist/types/cli/CommandProcessor.d.ts.map +1 -0
  112. package/dist/types/cli/commands/ConfigCommand.d.ts +14 -0
  113. package/dist/types/cli/commands/ConfigCommand.d.ts.map +1 -0
  114. package/dist/types/cli/commands/ExportCommand.d.ts +48 -0
  115. package/dist/types/cli/commands/ExportCommand.d.ts.map +1 -0
  116. package/dist/types/cli/commands/StatusCommand.d.ts +30 -0
  117. package/dist/types/cli/commands/StatusCommand.d.ts.map +1 -0
  118. package/dist/types/cli/commands/ThemeCommand.d.ts +30 -0
  119. package/dist/types/cli/commands/ThemeCommand.d.ts.map +1 -0
  120. package/dist/types/cli/help.d.ts +12 -0
  121. package/dist/types/cli/help.d.ts.map +1 -0
  122. package/dist/types/cli/index.d.ts +15 -0
  123. package/dist/types/cli/index.d.ts.map +1 -0
  124. package/dist/types/constants.d.ts +88 -0
  125. package/dist/types/constants.d.ts.map +1 -0
  126. package/dist/types/core.d.ts +71 -211
  127. package/dist/types/core.d.ts.map +1 -0
  128. package/dist/types/core.js +13 -0
  129. package/dist/types/example.d.ts +18 -0
  130. package/dist/types/example.d.ts.map +1 -0
  131. package/dist/types/exports-module.d.ts +196 -0
  132. package/dist/types/exports-module.d.ts.map +1 -0
  133. package/dist/types/handlers/AnalyticsLogHandler.d.ts +8 -0
  134. package/dist/types/handlers/AnalyticsLogHandler.d.ts.map +1 -0
  135. package/dist/types/handlers/ExportLogHandler.d.ts +100 -0
  136. package/dist/types/handlers/ExportLogHandler.d.ts.map +1 -0
  137. package/dist/types/handlers/FileLogHandler.d.ts +10 -0
  138. package/dist/types/handlers/FileLogHandler.d.ts.map +1 -0
  139. package/dist/types/handlers/RemoteLogHandler.d.ts +11 -0
  140. package/dist/types/handlers/RemoteLogHandler.d.ts.map +1 -0
  141. package/dist/types/handlers/index.d.ts +8 -0
  142. package/dist/types/handlers/index.d.ts.map +1 -0
  143. package/dist/types/handlers.d.ts +88 -0
  144. package/dist/types/handlers.d.ts.map +1 -0
  145. package/dist/types/handlers.js +4 -0
  146. package/dist/types/index.d.ts +7 -675
  147. package/dist/types/index.d.ts.map +1 -0
  148. package/dist/types/index.js +4 -0
  149. package/dist/types/main.d.ts +2 -0
  150. package/dist/types/main.d.ts.map +1 -0
  151. package/dist/types/styling/StyleBuilder.d.ts +132 -0
  152. package/dist/types/styling/StyleBuilder.d.ts.map +1 -0
  153. package/dist/types/styling/banners.d.ts +42 -0
  154. package/dist/types/styling/banners.d.ts.map +1 -0
  155. package/dist/types/styling/index.d.ts +7 -0
  156. package/dist/types/styling/index.d.ts.map +1 -0
  157. package/dist/types/styling/themes.d.ts +7 -0
  158. package/dist/types/styling/themes.d.ts.map +1 -0
  159. package/dist/types/styling-module.d.ts +178 -0
  160. package/dist/types/styling-module.d.ts.map +1 -0
  161. package/dist/types/types/core.d.ts +71 -0
  162. package/dist/types/types/core.d.ts.map +1 -0
  163. package/dist/types/types/handlers.d.ts +85 -0
  164. package/dist/types/types/handlers.d.ts.map +1 -0
  165. package/dist/types/types/index.d.ts +7 -0
  166. package/dist/types/types/index.d.ts.map +1 -0
  167. package/dist/types/utils/index.d.ts +7 -0
  168. package/dist/types/utils/index.d.ts.map +1 -0
  169. package/dist/types/utils/output.d.ts +29 -0
  170. package/dist/types/utils/output.d.ts.map +1 -0
  171. package/dist/types/utils/stackTrace.d.ts +6 -0
  172. package/dist/types/utils/stackTrace.d.ts.map +1 -0
  173. package/dist/types/utils/timestamps.d.ts +20 -0
  174. package/dist/types/utils/timestamps.d.ts.map +1 -0
  175. package/dist/utils/index.d.ts +7 -0
  176. package/dist/utils/index.d.ts.map +1 -0
  177. package/dist/utils/index.js +6 -0
  178. package/dist/utils/output.d.ts +32 -0
  179. package/dist/utils/output.d.ts.map +1 -0
  180. package/dist/utils/output.js +97 -0
  181. package/dist/utils/stackTrace.d.ts +9 -0
  182. package/dist/utils/stackTrace.d.ts.map +1 -0
  183. package/dist/utils/stackTrace.js +81 -0
  184. package/dist/utils/timestamps.d.ts +20 -0
  185. package/dist/utils/timestamps.d.ts.map +1 -0
  186. package/dist/utils/timestamps.js +71 -0
  187. package/docs/API.md +607 -0
  188. package/docs/DEVELOPMENT.md +731 -0
  189. package/docs/_config.yml +36 -0
  190. package/docs/index.md +179 -0
  191. package/examples/README.md +208 -0
  192. package/examples/basic-logging.js +75 -0
  193. package/examples/data-export.js +234 -0
  194. package/examples/package.json +16 -0
  195. package/examples/performance-timing.js +170 -0
  196. package/examples/styling-themes.js +207 -0
  197. package/package.json +32 -19
  198. package/packages/core/package.json +35 -0
  199. package/packages/exports/package.json +41 -0
  200. package/packages/styling/package.json +41 -0
  201. package/project-utils/README.md +172 -0
  202. package/project-utils/auto-release-gemini.ts +1193 -0
  203. package/project-utils/commit-generator.ts +1000 -0
  204. package/project-utils/commit-ui.ts +246 -0
  205. package/project-utils/git-utils.ts +199 -0
  206. package/project-utils/github-release-manager.ts +466 -0
  207. package/project-utils/prompt-templates.js +345 -0
  208. package/project-utils/prompt-templates.ts +422 -0
  209. package/project-utils/version-manager.ts +1078 -0
  210. package/src/Logger.ts +2 -1
  211. package/src/handlers/ExportLogHandler.ts +141 -0
  212. package/vite.config.ts +152 -50
  213. package/.claude/settings.local.json +0 -16
  214. package/dist/chunks/Logger-BQhMKy_T.js +0 -2
  215. package/dist/chunks/Logger-BQhMKy_T.js.map +0 -1
  216. package/dist/chunks/Logger-BrFKFZcD.js.map +0 -1
  217. package/dist/chunks/core-2opW4Pi3.js +0 -194
  218. package/dist/chunks/core-2opW4Pi3.js.map +0 -1
  219. package/dist/chunks/core-DyugwSYZ.js +0 -4
  220. package/dist/chunks/core-DyugwSYZ.js.map +0 -1
  221. package/dist/chunks/exports-BNP3R7dp.js +0 -421
  222. package/dist/chunks/exports-BNP3R7dp.js.map +0 -1
  223. package/dist/chunks/exports-U1xLBXrY.js +0 -2
  224. package/dist/chunks/exports-U1xLBXrY.js.map +0 -1
  225. package/dist/chunks/styling-DhUDzwlE.js +0 -654
  226. package/dist/chunks/styling-DhUDzwlE.js.map +0 -1
  227. package/dist/chunks/styling-tmRDI28D.js +0 -2
  228. package/dist/chunks/styling-tmRDI28D.js.map +0 -1
  229. package/dist/types/exports.d.ts +0 -600
  230. package/dist/types/styling.d.ts +0 -751
@@ -0,0 +1,196 @@
1
+ name: Nightly Builds
2
+
3
+ on:
4
+ schedule:
5
+ # Ejecutar cada día a las 3:00 AM UTC
6
+ - cron: '0 3 * * *'
7
+ workflow_dispatch:
8
+ inputs:
9
+ force_build:
10
+ description: 'Forzar build aunque no haya cambios'
11
+ required: false
12
+ default: false
13
+ type: boolean
14
+
15
+ env:
16
+ NODE_VERSION: '20'
17
+ REGISTRY_URL: 'https://registry.npmjs.org'
18
+
19
+ jobs:
20
+ check-changes:
21
+ runs-on: ubuntu-latest
22
+ outputs:
23
+ has_changes: ${{ steps.changes.outputs.has_changes }}
24
+ last_commit: ${{ steps.changes.outputs.last_commit }}
25
+ commit_count: ${{ steps.changes.outputs.commit_count }}
26
+
27
+ steps:
28
+ - name: 📥 Checkout code
29
+ uses: actions/checkout@v4
30
+ with:
31
+ fetch-depth: 0
32
+
33
+ - name: 🔍 Check for changes since last nightly
34
+ id: changes
35
+ run: |
36
+ # Buscar último tag nightly
37
+ LAST_NIGHTLY=$(git tag -l "nightly-*" | sort -V | tail -1 || echo "")
38
+
39
+ if [ -z "$LAST_NIGHTLY" ]; then
40
+ # No hay nightlies previos, verificar desde hace 24 horas
41
+ SINCE_DATE=$(date -d '24 hours ago' --iso-8601)
42
+ COMMITS_COUNT=$(git log --since="$SINCE_DATE" --oneline | wc -l)
43
+ else
44
+ # Verificar desde último nightly
45
+ COMMITS_COUNT=$(git log $LAST_NIGHTLY..HEAD --oneline | wc -l)
46
+ fi
47
+
48
+ LAST_COMMIT=$(git rev-parse --short HEAD)
49
+
50
+ echo "commit_count=$COMMITS_COUNT" >> $GITHUB_OUTPUT
51
+ echo "last_commit=$LAST_COMMIT" >> $GITHUB_OUTPUT
52
+
53
+ if [ "$COMMITS_COUNT" -gt 0 ] || [ "${{ inputs.force_build }}" == "true" ]; then
54
+ echo "has_changes=true" >> $GITHUB_OUTPUT
55
+ echo "✅ Cambios detectados: $COMMITS_COUNT commits"
56
+ else
57
+ echo "has_changes=false" >> $GITHUB_OUTPUT
58
+ echo "ℹ️ No hay cambios desde último nightly"
59
+ fi
60
+
61
+ nightly-build:
62
+ runs-on: ubuntu-latest
63
+ needs: check-changes
64
+ if: needs.check-changes.outputs.has_changes == 'true'
65
+
66
+ permissions:
67
+ contents: write
68
+ packages: write
69
+ id-token: write
70
+
71
+ steps:
72
+ - name: 📥 Checkout code
73
+ uses: actions/checkout@v4
74
+ with:
75
+ fetch-depth: 0
76
+ token: ${{ secrets.GITHUB_TOKEN }}
77
+
78
+ - name: 📦 Setup Node.js
79
+ uses: actions/setup-node@v4
80
+ with:
81
+ node-version: ${{ env.NODE_VERSION }}
82
+ cache: 'npm'
83
+ registry-url: ${{ env.REGISTRY_URL }}
84
+
85
+ - name: 🔧 Install dependencies
86
+ run: npm ci
87
+
88
+ - name: 🏗️ Build library
89
+ run: npm run build
90
+
91
+ - name: 🧪 Run tests
92
+ run: |
93
+ npm run type-check
94
+ npm run test
95
+ npm run size-limit
96
+
97
+ - name: 🏷️ Generate nightly version
98
+ id: version
99
+ run: |
100
+ # Generar versión nightly usando commit y fecha
101
+ DATE=$(date +%Y%m%d)
102
+ SHORT_SHA="${{ needs.check-changes.outputs.last_commit }}"
103
+ BASE_VERSION=$(node -p "require('./package.json').version")
104
+
105
+ # Remover cualquier sufijo existente del base version
106
+ CLEAN_VERSION=$(echo $BASE_VERSION | sed 's/-.*//')
107
+ NIGHTLY_VERSION="${CLEAN_VERSION}-nightly.${DATE}.${SHORT_SHA}"
108
+
109
+ echo "version=$NIGHTLY_VERSION" >> $GITHUB_OUTPUT
110
+ echo "tag=nightly-$DATE-$SHORT_SHA" >> $GITHUB_OUTPUT
111
+ echo "🌙 Nightly version: $NIGHTLY_VERSION"
112
+
113
+ - name: 📝 Update package.json for nightly
114
+ run: |
115
+ npm version ${{ steps.version.outputs.version }} --no-git-tag-version
116
+
117
+ - name: 📦 Create nightly archives
118
+ run: |
119
+ mkdir -p nightly-dist
120
+
121
+ # Crear archivos de distribución nightly
122
+ tar -czf nightly-dist/better-logger-nightly-${{ steps.version.outputs.tag }}.tar.gz dist/ README.md package.json
123
+ zip -r nightly-dist/better-logger-nightly-${{ steps.version.outputs.tag }}.zip dist/ README.md package.json
124
+
125
+ - name: 🚀 Publish nightly to NPM
126
+ run: |
127
+ npm publish --tag nightly --access public
128
+ env:
129
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
130
+
131
+ - name: 📦 Publish nightly to GitHub Packages
132
+ run: |
133
+ echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc
134
+ echo "@mks2508:registry=https://npm.pkg.github.com" >> ~/.npmrc
135
+ npm publish --registry=https://npm.pkg.github.com --tag nightly --access public
136
+
137
+ - name: 🏷️ Create nightly tag
138
+ run: |
139
+ git config user.name "github-actions[bot]"
140
+ git config user.email "github-actions[bot]@users.noreply.github.com"
141
+ git tag -a "${{ steps.version.outputs.tag }}" -m "Nightly build ${{ steps.version.outputs.version }}"
142
+ git push origin "${{ steps.version.outputs.tag }}"
143
+
144
+ - name: 🌙 Create nightly release
145
+ uses: softprops/action-gh-release@v1
146
+ with:
147
+ tag_name: ${{ steps.version.outputs.tag }}
148
+ name: "Nightly Build ${{ steps.version.outputs.version }}"
149
+ body: |
150
+ 🌙 **Nightly Build** - Experimental version for testing
151
+
152
+ **⚠️ This is a development build - not recommended for production use**
153
+
154
+ ## 📋 Changes since last nightly
155
+ ${{ needs.check-changes.outputs.commit_count }} commits included in this build.
156
+
157
+ ## 📦 Installation
158
+ ```bash
159
+ npm install @mks2508/better-logger@nightly
160
+ ```
161
+
162
+ ## 🔗 Links
163
+ - **Commit**: https://github.com/MKS2508/advanced-logger/commit/${{ needs.check-changes.outputs.last_commit }}
164
+ - **NPM**: https://www.npmjs.com/package/@mks2508/better-logger/v/${{ steps.version.outputs.version }}
165
+ draft: false
166
+ prerelease: true
167
+ files: |
168
+ nightly-dist/better-logger-nightly-${{ steps.version.outputs.tag }}.tar.gz
169
+ nightly-dist/better-logger-nightly-${{ steps.version.outputs.tag }}.zip
170
+ env:
171
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
172
+
173
+ - name: 📊 Nightly build summary
174
+ run: |
175
+ echo "## 🌙 Nightly Build Complete!" >> $GITHUB_STEP_SUMMARY
176
+ echo "- **Version**: ${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
177
+ echo "- **Commits**: ${{ needs.check-changes.outputs.commit_count }}" >> $GITHUB_STEP_SUMMARY
178
+ echo "- **NPM**: https://www.npmjs.com/package/@mks2508/better-logger/v/${{ steps.version.outputs.version }}" >> $GITHUB_STEP_SUMMARY
179
+ echo "- **GitHub**: https://github.com/MKS2508/advanced-logger/releases/tag/${{ steps.version.outputs.tag }}" >> $GITHUB_STEP_SUMMARY
180
+ echo "" >> $GITHUB_STEP_SUMMARY
181
+ echo "### 📦 Installation" >> $GITHUB_STEP_SUMMARY
182
+ echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
183
+ echo "npm install @mks2508/better-logger@nightly" >> $GITHUB_STEP_SUMMARY
184
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
185
+
186
+ no-changes:
187
+ runs-on: ubuntu-latest
188
+ needs: check-changes
189
+ if: needs.check-changes.outputs.has_changes == 'false'
190
+
191
+ steps:
192
+ - name: ℹ️ No changes detected
193
+ run: |
194
+ echo "## ℹ️ No Nightly Build Required" >> $GITHUB_STEP_SUMMARY
195
+ echo "No changes detected since last nightly build." >> $GITHUB_STEP_SUMMARY
196
+ echo "Use \`workflow_dispatch\` with \`force_build: true\` to force a build." >> $GITHUB_STEP_SUMMARY
@@ -0,0 +1,373 @@
1
+ name: Optimized Release Pipeline
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ release_type:
7
+ description: 'Tipo de release'
8
+ required: true
9
+ default: 'auto'
10
+ type: choice
11
+ options:
12
+ - auto
13
+ - patch
14
+ - minor
15
+ - major
16
+ - alpha
17
+ - beta
18
+ - stable
19
+ use_gemini:
20
+ description: 'Usar Gemini AI para versionado'
21
+ required: false
22
+ default: true
23
+ type: boolean
24
+ skip_tests:
25
+ description: 'Saltar tests (no recomendado)'
26
+ required: false
27
+ default: false
28
+ type: boolean
29
+ target_registry:
30
+ description: 'Registro objetivo'
31
+ required: false
32
+ default: 'both'
33
+ type: choice
34
+ options:
35
+ - npm
36
+ - github
37
+ - both
38
+
39
+ env:
40
+ NODE_VERSION: '20'
41
+
42
+ jobs:
43
+ # ===== VALIDATION & VERSIONING =====
44
+ prepare-release:
45
+ runs-on: ubuntu-latest
46
+
47
+ outputs:
48
+ version: ${{ steps.version.outputs.version }}
49
+ tag: ${{ steps.version.outputs.tag }}
50
+ is_prerelease: ${{ steps.version.outputs.is_prerelease }}
51
+ changelog: ${{ steps.version.outputs.changelog }}
52
+ release_channel: ${{ steps.version.outputs.release_channel }}
53
+
54
+ steps:
55
+ - name: 📥 Checkout code
56
+ uses: actions/checkout@v4
57
+ with:
58
+ fetch-depth: 0
59
+ token: ${{ secrets.GITHUB_TOKEN }}
60
+
61
+ - name: 📦 Setup Node.js
62
+ uses: actions/setup-node@v4
63
+ with:
64
+ node-version: ${{ env.NODE_VERSION }}
65
+ cache: 'npm'
66
+
67
+ - name: 🔧 Install dependencies
68
+ run: npm ci
69
+
70
+ - name: 🧪 Run tests (unless skipped)
71
+ if: ${{ !inputs.skip_tests }}
72
+ run: |
73
+ npm run type-check
74
+ npm run lint
75
+ npm run test
76
+ npm run build
77
+
78
+ - name: 🏷️ Generate version with project-utils
79
+ id: version
80
+ run: |
81
+ if [ "${{ inputs.use_gemini }}" == "true" ] && [ "${{ inputs.release_type }}" == "auto" ]; then
82
+ # Usar auto-release con Gemini para detección inteligente
83
+ echo "🤖 Usando Gemini AI para versionado automático..."
84
+ npm run version:auto
85
+ elif [ "${{ inputs.release_type }}" == "auto" ]; then
86
+ # Auto-detección sin Gemini
87
+ echo "🔍 Auto-detectando tipo de versión..."
88
+ npm run version:auto
89
+ else
90
+ # Tipo específico forzado
91
+ echo "🎯 Usando tipo de versión forzado: ${{ inputs.release_type }}"
92
+ case "${{ inputs.release_type }}" in
93
+ "patch") npm run version:patch ;;
94
+ "minor") npm run version:minor ;;
95
+ "major") npm run version:major ;;
96
+ "alpha") npm run version:alpha ;;
97
+ "beta") npm run version:beta ;;
98
+ "stable") npm run version:stable ;;
99
+ esac
100
+ fi
101
+
102
+ # Obtener nueva versión del package.json
103
+ NEW_VERSION=$(node -p "require('./package.json').version")
104
+ echo "version=$NEW_VERSION" >> $GITHUB_OUTPUT
105
+ echo "tag=v$NEW_VERSION" >> $GITHUB_OUTPUT
106
+
107
+ # Determinar si es prerelease y canal
108
+ if [[ "$NEW_VERSION" == *"alpha"* ]]; then
109
+ echo "is_prerelease=true" >> $GITHUB_OUTPUT
110
+ echo "release_channel=alpha" >> $GITHUB_OUTPUT
111
+ elif [[ "$NEW_VERSION" == *"beta"* ]]; then
112
+ echo "is_prerelease=true" >> $GITHUB_OUTPUT
113
+ echo "release_channel=beta" >> $GITHUB_OUTPUT
114
+ else
115
+ echo "is_prerelease=false" >> $GITHUB_OUTPUT
116
+ echo "release_channel=latest" >> $GITHUB_OUTPUT
117
+ fi
118
+
119
+ echo "📦 Nueva versión: $NEW_VERSION"
120
+
121
+ - name: 📝 Generate changelog
122
+ id: changelog
123
+ run: |
124
+ # Usar project-utils para generar changelog si existe
125
+ if [ -f "project-utils/.temp/commit-proposal"*".md" ]; then
126
+ echo "📋 Usando changelog de project-utils..."
127
+ CHANGELOG=$(cat project-utils/.temp/commit-proposal*.md | head -n 20)
128
+ else
129
+ # Fallback a changelog tradicional
130
+ LAST_TAG=$(git describe --tags --abbrev=0 HEAD~1 2>/dev/null || echo "")
131
+ if [ -n "$LAST_TAG" ]; then
132
+ echo "📋 Generando changelog desde $LAST_TAG..."
133
+ CHANGELOG=$(git log $LAST_TAG..HEAD --pretty=format:"- %s (%h)")
134
+ else
135
+ echo "📋 Changelog de release inicial..."
136
+ CHANGELOG="- Initial release with complete Better Logger functionality"
137
+ fi
138
+ fi
139
+
140
+ # Guardar changelog en archivo para uso posterior
141
+ echo "$CHANGELOG" > RELEASE_CHANGELOG.md
142
+ echo "changelog=$(echo "$CHANGELOG" | base64 -w 0)" >> $GITHUB_OUTPUT
143
+
144
+ - name: 🏗️ Build optimized
145
+ run: |
146
+ npm run build
147
+
148
+ # Verificar que todos los archivos esperados existen
149
+ echo "📊 Verificando build outputs..."
150
+ ls -la dist/
151
+
152
+ # Guardar información de bundle sizes
153
+ echo "## 📦 Bundle Sizes" > BUNDLE_SIZES.md
154
+ echo "\`\`\`" >> BUNDLE_SIZES.md
155
+ ls -lh dist/*.js dist/*.cjs | grep -E '\.(js|cjs)$' >> BUNDLE_SIZES.md
156
+ echo "\`\`\`" >> BUNDLE_SIZES.md
157
+
158
+ - name: 📤 Upload build artifacts
159
+ uses: actions/upload-artifact@v4
160
+ with:
161
+ name: release-build-${{ steps.version.outputs.version }}
162
+ path: |
163
+ dist/
164
+ RELEASE_CHANGELOG.md
165
+ BUNDLE_SIZES.md
166
+ retention-days: 30
167
+
168
+ # ===== SMART PUBLISHING =====
169
+ publish-packages:
170
+ runs-on: ubuntu-latest
171
+ needs: prepare-release
172
+ if: ${{ inputs.target_registry == 'npm' || inputs.target_registry == 'both' }}
173
+
174
+ steps:
175
+ - name: 📥 Checkout code
176
+ uses: actions/checkout@v4
177
+
178
+ - name: 📦 Setup Node.js for NPM
179
+ uses: actions/setup-node@v4
180
+ with:
181
+ node-version: ${{ env.NODE_VERSION }}
182
+ cache: 'npm'
183
+ registry-url: 'https://registry.npmjs.org'
184
+
185
+ - name: 📥 Download build artifacts
186
+ uses: actions/download-artifact@v4
187
+ with:
188
+ name: release-build-${{ needs.prepare-release.outputs.version }}
189
+
190
+ - name: 🔄 Update package version
191
+ run: npm version ${{ needs.prepare-release.outputs.version }} --no-git-tag-version
192
+
193
+ - name: 🚀 Publish to NPM
194
+ run: |
195
+ if [ "${{ needs.prepare-release.outputs.is_prerelease }}" == "true" ]; then
196
+ echo "📦 Publishing prerelease to NPM with tag: ${{ needs.prepare-release.outputs.release_channel }}"
197
+ npm publish --access public --tag ${{ needs.prepare-release.outputs.release_channel }}
198
+ else
199
+ echo "📦 Publishing stable release to NPM"
200
+ npm publish --access public
201
+ fi
202
+ env:
203
+ NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
204
+
205
+ publish-github:
206
+ runs-on: ubuntu-latest
207
+ needs: prepare-release
208
+ if: ${{ inputs.target_registry == 'github' || inputs.target_registry == 'both' }}
209
+
210
+ steps:
211
+ - name: 📥 Checkout code
212
+ uses: actions/checkout@v4
213
+
214
+ - name: 📦 Setup Node.js for GitHub Packages
215
+ uses: actions/setup-node@v4
216
+ with:
217
+ node-version: ${{ env.NODE_VERSION }}
218
+ cache: 'npm'
219
+ registry-url: 'https://npm.pkg.github.com'
220
+
221
+ - name: 📥 Download build artifacts
222
+ uses: actions/download-artifact@v4
223
+ with:
224
+ name: release-build-${{ needs.prepare-release.outputs.version }}
225
+
226
+ - name: 🔄 Update package version
227
+ run: npm version ${{ needs.prepare-release.outputs.version }} --no-git-tag-version
228
+
229
+ - name: 📦 Publish to GitHub Packages
230
+ run: |
231
+ if [ "${{ needs.prepare-release.outputs.is_prerelease }}" == "true" ]; then
232
+ echo "📦 Publishing prerelease to GitHub Packages with tag: ${{ needs.prepare-release.outputs.release_channel }}"
233
+ npm publish --access public --tag ${{ needs.prepare-release.outputs.release_channel }}
234
+ else
235
+ echo "📦 Publishing stable release to GitHub Packages"
236
+ npm publish --access public
237
+ fi
238
+ env:
239
+ NODE_AUTH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
240
+
241
+ # ===== GITHUB RELEASE =====
242
+ create-github-release:
243
+ runs-on: ubuntu-latest
244
+ needs: [prepare-release, publish-packages, publish-github]
245
+ if: always() && needs.prepare-release.result == 'success'
246
+
247
+ permissions:
248
+ contents: write
249
+ id-token: write
250
+
251
+ steps:
252
+ - name: 📥 Checkout code
253
+ uses: actions/checkout@v4
254
+ with:
255
+ fetch-depth: 0
256
+ token: ${{ secrets.GITHUB_TOKEN }}
257
+
258
+ - name: 📥 Download build artifacts
259
+ uses: actions/download-artifact@v4
260
+ with:
261
+ name: release-build-${{ needs.prepare-release.outputs.version }}
262
+
263
+ - name: 📦 Create release archives
264
+ run: |
265
+ VERSION=${{ needs.prepare-release.outputs.version }}
266
+
267
+ # Crear archivos de distribución
268
+ tar -czf better-logger-${VERSION}.tar.gz dist/ docs/ README.md package.json
269
+ zip -r better-logger-${VERSION}.zip dist/ docs/ README.md package.json
270
+
271
+ # Crear paquetes modulares
272
+ cd dist
273
+ tar -czf ../better-logger-core-${VERSION}.tar.gz core.* types/core.d.ts 2>/dev/null || true
274
+ tar -czf ../better-logger-styling-${VERSION}.tar.gz styling.* types/styling.d.ts 2>/dev/null || true
275
+ tar -czf ../better-logger-exports-${VERSION}.tar.gz exports.* types/exports.d.ts 2>/dev/null || true
276
+ cd ..
277
+
278
+ - name: 🏷️ Commit and tag
279
+ run: |
280
+ git config user.name "github-actions[bot]"
281
+ git config user.email "github-actions[bot]@users.noreply.github.com"
282
+ git add package.json
283
+ git commit -m "chore: release ${{ needs.prepare-release.outputs.version }}" || true
284
+ git tag -a "${{ needs.prepare-release.outputs.tag }}" -m "Release ${{ needs.prepare-release.outputs.version }}"
285
+ git push origin main --tags
286
+
287
+ - name: 📝 Prepare release notes
288
+ run: |
289
+ VERSION=${{ needs.prepare-release.outputs.version }}
290
+ CHANGELOG=$(echo "${{ needs.prepare-release.outputs.changelog }}" | base64 -d)
291
+
292
+ echo "# Better Logger ${VERSION}" > FINAL_RELEASE_NOTES.md
293
+ echo "" >> FINAL_RELEASE_NOTES.md
294
+
295
+ if [ "${{ needs.prepare-release.outputs.is_prerelease }}" == "true" ]; then
296
+ echo "⚠️ **This is a pre-release version** - Not recommended for production use." >> FINAL_RELEASE_NOTES.md
297
+ echo "" >> FINAL_RELEASE_NOTES.md
298
+ fi
299
+
300
+ echo "## 🔄 Changes" >> FINAL_RELEASE_NOTES.md
301
+ echo "$CHANGELOG" >> FINAL_RELEASE_NOTES.md
302
+ echo "" >> FINAL_RELEASE_NOTES.md
303
+
304
+ cat BUNDLE_SIZES.md >> FINAL_RELEASE_NOTES.md
305
+ echo "" >> FINAL_RELEASE_NOTES.md
306
+
307
+ echo "## 📦 Installation" >> FINAL_RELEASE_NOTES.md
308
+ if [ "${{ needs.prepare-release.outputs.is_prerelease }}" == "true" ]; then
309
+ echo "\`\`\`bash" >> FINAL_RELEASE_NOTES.md
310
+ echo "npm install @mks2508/better-logger@${{ needs.prepare-release.outputs.release_channel }}" >> FINAL_RELEASE_NOTES.md
311
+ echo "\`\`\`" >> FINAL_RELEASE_NOTES.md
312
+ else
313
+ echo "\`\`\`bash" >> FINAL_RELEASE_NOTES.md
314
+ echo "npm install @mks2508/better-logger" >> FINAL_RELEASE_NOTES.md
315
+ echo "\`\`\`" >> FINAL_RELEASE_NOTES.md
316
+ fi
317
+
318
+ - name: 🚀 Create GitHub Release
319
+ uses: softprops/action-gh-release@v1
320
+ with:
321
+ tag_name: ${{ needs.prepare-release.outputs.tag }}
322
+ name: Better Logger ${{ needs.prepare-release.outputs.version }}
323
+ body_path: FINAL_RELEASE_NOTES.md
324
+ draft: false
325
+ prerelease: ${{ needs.prepare-release.outputs.is_prerelease == 'true' }}
326
+ files: |
327
+ better-logger-${{ needs.prepare-release.outputs.version }}.tar.gz
328
+ better-logger-${{ needs.prepare-release.outputs.version }}.zip
329
+ better-logger-core-${{ needs.prepare-release.outputs.version }}.tar.gz
330
+ better-logger-styling-${{ needs.prepare-release.outputs.version }}.tar.gz
331
+ better-logger-exports-${{ needs.prepare-release.outputs.version }}.tar.gz
332
+ env:
333
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
334
+
335
+ # ===== POST-RELEASE SUMMARY =====
336
+ release-summary:
337
+ runs-on: ubuntu-latest
338
+ needs: [prepare-release, publish-packages, publish-github, create-github-release]
339
+ if: always() && needs.prepare-release.result == 'success'
340
+
341
+ steps:
342
+ - name: 📊 Release Summary
343
+ run: |
344
+ VERSION="${{ needs.prepare-release.outputs.version }}"
345
+ TAG="${{ needs.prepare-release.outputs.tag }}"
346
+ CHANNEL="${{ needs.prepare-release.outputs.release_channel }}"
347
+ IS_PRERELEASE="${{ needs.prepare-release.outputs.is_prerelease }}"
348
+
349
+ echo "## 🎉 Release Complete!" >> $GITHUB_STEP_SUMMARY
350
+ echo "- **Version**: $VERSION" >> $GITHUB_STEP_SUMMARY
351
+ echo "- **Channel**: $CHANNEL" >> $GITHUB_STEP_SUMMARY
352
+ echo "- **Prerelease**: $IS_PRERELEASE" >> $GITHUB_STEP_SUMMARY
353
+ echo "" >> $GITHUB_STEP_SUMMARY
354
+
355
+ echo "### 🔗 Links" >> $GITHUB_STEP_SUMMARY
356
+ if [ "${{ inputs.target_registry == 'npm' || inputs.target_registry == 'both' }}" ]; then
357
+ echo "- **NPM**: https://www.npmjs.com/package/@mks2508/better-logger" >> $GITHUB_STEP_SUMMARY
358
+ fi
359
+ if [ "${{ inputs.target_registry == 'github' || inputs.target_registry == 'both' }}" ]; then
360
+ echo "- **GitHub Packages**: https://github.com/MKS2508/advanced-logger/packages/" >> $GITHUB_STEP_SUMMARY
361
+ fi
362
+ echo "- **GitHub Release**: https://github.com/MKS2508/advanced-logger/releases/tag/$TAG" >> $GITHUB_STEP_SUMMARY
363
+ echo "- **Documentation**: https://mks2508.github.io/advanced-logger/" >> $GITHUB_STEP_SUMMARY
364
+ echo "" >> $GITHUB_STEP_SUMMARY
365
+
366
+ echo "### 📦 Installation" >> $GITHUB_STEP_SUMMARY
367
+ echo "\`\`\`bash" >> $GITHUB_STEP_SUMMARY
368
+ if [ "$IS_PRERELEASE" == "true" ]; then
369
+ echo "npm install @mks2508/better-logger@$CHANNEL" >> $GITHUB_STEP_SUMMARY
370
+ else
371
+ echo "npm install @mks2508/better-logger" >> $GITHUB_STEP_SUMMARY
372
+ fi
373
+ echo "\`\`\`" >> $GITHUB_STEP_SUMMARY
@@ -97,6 +97,10 @@ jobs:
97
97
  create-release:
98
98
  runs-on: ubuntu-latest
99
99
  needs: pre-release
100
+ permissions:
101
+ contents: write
102
+ packages: write
103
+ id-token: write
100
104
 
101
105
  steps:
102
106
  - name: 📥 Checkout code
@@ -163,7 +167,7 @@ jobs:
163
167
  git tag -a "${{ needs.pre-release.outputs.tag }}" -m "Release ${{ needs.pre-release.outputs.version }}"
164
168
  git push origin main --tags
165
169
 
166
- - name: 🚀 Publish to NPM
170
+ - name: 🚀 Publish to NPM Registry
167
171
  run: |
168
172
  if [[ "${{ inputs.release_type }}" == "alpha" || "${{ inputs.release_type }}" == "beta" ]]; then
169
173
  npm run ci:publish -- --tag ${{ inputs.release_type }}
@@ -172,6 +176,19 @@ jobs:
172
176
  fi
173
177
  env:
174
178
  NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
179
+
180
+ - name: 📦 Setup GitHub Packages Registry
181
+ run: |
182
+ echo "//npm.pkg.github.com/:_authToken=${{ secrets.GITHUB_TOKEN }}" >> ~/.npmrc
183
+ echo "@mks2508:registry=https://npm.pkg.github.com" >> ~/.npmrc
184
+
185
+ - name: 📦 Publish to GitHub Packages
186
+ run: |
187
+ if [[ "${{ inputs.release_type }}" == "alpha" || "${{ inputs.release_type }}" == "beta" ]]; then
188
+ npm publish --registry=https://npm.pkg.github.com --access=public --tag ${{ inputs.release_type }} --ignore-scripts
189
+ else
190
+ npm publish --registry=https://npm.pkg.github.com --access=public --ignore-scripts
191
+ fi
175
192
 
176
193
  - name: 🏷️ Create GitHub Release
177
194
  uses: softprops/action-gh-release@v1
@@ -194,6 +211,10 @@ jobs:
194
211
  post-release:
195
212
  runs-on: ubuntu-latest
196
213
  needs: [pre-release, create-release]
214
+ permissions:
215
+ contents: read
216
+ pages: write
217
+ id-token: write
197
218
 
198
219
  steps:
199
220
  - name: 📥 Checkout code