@futdevpro/dynamo-eslint 1.15.16 β†’ 1.15.19

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.
@@ -20,6 +20,24 @@
20
20
  "includeStepLogs": false
21
21
  },
22
22
  "steps": [
23
+ {
24
+ "_comment": "FR-171 (2026-06-13) β€” auto-introspect ALL steps' condition.envSet + command ${VAR} refs. Reports PRESENT/MISSING env-vars + which downstream steps will silent-skip. Warning-only by default; fail-fast on the `requireSet` list. Goal: never again silent-skip discord/hot-update without surfacing the missing env at step #1.",
25
+ "label": "validate-secrets",
26
+ "type": "validate-secrets",
27
+ "fatal": false,
28
+ "discord": {
29
+ "emoji": "πŸ”",
30
+ "name": "Secrets Check",
31
+ "group": "preflight",
32
+ "groupName": "Pre-flight Check",
33
+ "groupEmoji": "πŸ”"
34
+ },
35
+ "settings": {
36
+ "requireSet": [
37
+ "NPM_TOKEN"
38
+ ]
39
+ }
40
+ },
23
41
  {
24
42
  "label": "discord-start",
25
43
  "command": "dc ci-dn-s '{\"appName\":\"Dynamo-ESLint\",\"appEmoji\":\"πŸ”§\",\"commitMessage\":\"$COMMIT_MESSAGE\",\"branchName\":\"$GITHUB_REF_NAME\",\"author\":\"$GITHUB_ACTOR\",\"runNumber\":\"$GITHUB_RUN_NUMBER\",\"runId\":\"$GITHUB_RUN_ID\",\"repository\":\"$GITHUB_REPOSITORY\",\"eventName\":\"$GITHUB_EVENT_NAME\",\"eventDateTime\":\"$EVENT_DATETIME\"}'",
@@ -87,7 +105,7 @@
87
105
  },
88
106
  {
89
107
  "label": "build",
90
- "command": "npx tsc",
108
+ "command": "rimraf ./build && npx tsc",
91
109
  "fatal": true,
92
110
  "discord": {
93
111
  "emoji": "πŸ—οΈ",
@@ -118,6 +136,10 @@
118
136
  "condition": {
119
137
  "branchMatch": [
120
138
  "master"
139
+ ],
140
+ "allPassed": [
141
+ "build",
142
+ "test"
121
143
  ]
122
144
  },
123
145
  "settings": {
@@ -1,430 +1,436 @@
1
- # =============================================================================
2
- # Dynamo-ESLint CI/CD β€” Overseer Pipeline Trigger
3
- # =============================================================================
4
- # Ez a workflow CSAK egy webhook-ot kuld az Overseer-nek es AZONNAL kilep.
5
- # A pipeline-t az Overseer FDP Runner-ek futtatjak (nem a GitHub Actions).
6
- #
7
- # A regi workflow-k a fajl vegen kommentben megtalalhatok (fallback).
8
- # =============================================================================
9
-
10
- name: Trigger Pipeline
11
- on:
12
- workflow_dispatch:
13
- # Az org-szintu GitHub webhook kozvetlenul triggereli az Overseer-t.
14
- # Ez a workflow csak manualis fallback (workflow_dispatch).
15
-
16
- jobs:
17
- trigger:
18
- name: Overseer Trigger
19
- runs-on: ubuntu-latest
20
- timeout-minutes: 1
21
- steps:
22
- - uses: actions/checkout@v4
23
-
24
- - name: Trigger Overseer Pipeline
25
- uses: futdevpro/fdp-github-actions/overseer-trigger@master
26
- with:
27
- OVERSEER_WEBHOOK_URL: ${{ vars.OVERSEER_URL }}/pipeline-runner/webhook/github
28
- OVERSEER_WEBHOOK_SECRET: ${{ secrets.OVERSEER_SECRET_KEY }}
29
-
30
- # =============================================================================
31
- # REGI WORKFLOW (fallback) β€” NE TOROLD!
32
- # =============================================================================
33
- # name: Test and Deploy
34
- # on:
35
- # push:
36
- # branches:
37
- # - '**'
38
- # permissions:
39
- # actions: read
40
- # id-token: write
41
- # contents: read
42
- # checks: write
43
- # issues: read
44
- # pull-requests: write
45
- # env:
46
- # PACKAGE_NAME: ''
47
- # THIS_VERSION: 0.0.0
48
- # LATEST_VERSION: 0.0.0
49
- # VERSION_PUBLISHED: true
50
- #
51
- #
52
- # jobs:
53
- # notification0:
54
- # name: 🏹 Discord start Notification
55
- # runs-on: ubuntu-latest
56
- # #runs-on: plo-koon
57
- # timeout-minutes: 20
58
- # outputs:
59
- # start: ${{ steps.mark_start.outputs.started }}
60
- # steps:
61
- # - uses: actions/checkout@v4
62
- # - id: mark_start
63
- # run: echo "started=$(date +%s)" >> "$GITHUB_OUTPUT"
64
- # - name: Send Discord start notification
65
- # uses: futdevpro/fdp-github-actions/discord-start-notification@latest
66
- # with:
67
- # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
68
- # APPLICATION_NAME: "Dynamo-ESLint"
69
- # APPLICATION_EMOJI: "πŸ”§"
70
- # COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
71
- # EVENT_DATETIME: ${{ github.event.head_commit.timestamp }}
72
- # DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}
73
- # DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
74
- #
75
- # notification0_fail_report:
76
- # name: πŸ’£ Discord Start Notification Fail Report
77
- # runs-on: ubuntu-latest
78
- # #runs-on: plo-koon
79
- # timeout-minutes: 20
80
- # if: always() && needs.notification0.result == 'failure'
81
- # needs: [notification0]
82
- # steps:
83
- # - name: send custom message with args
84
- # uses: appleboy/discord-action@master
85
- # with:
86
- # webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
87
- # webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
88
- # message: |
89
- # βŒβŒβŒπŸ”§ Failed to send Discord start notification for ${{ github.repository }}! [πŸ”—](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
90
- #
91
- # check_secrets:
92
- # name: πŸ” Check Required Secrets and Variables
93
- # #runs-on: ubuntu-latest
94
- # runs-on: plo-koon
95
- # timeout-minutes: 20
96
- # steps:
97
- # - name: Check Required Secrets and Variables
98
- # uses: futdevpro/fdp-github-actions/check-secrets-and-variables@latest
99
- # with:
100
- # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
101
- # ITEMS_TO_CHECK: |
102
- # [
103
- # {
104
- # "valueName": "NPM_TOKEN",
105
- # "value": "${{ secrets.NPM_TOKEN }}",
106
- # "type": "SECRET"
107
- # },
108
- # {
109
- # "valueName": "DISCORD_WEBHOOK_ID",
110
- # "value": "${{ secrets.DISCORD_WEBHOOK_ID }}",
111
- # "type": "SECRET"
112
- # },
113
- # {
114
- # "valueName": "DISCORD_WEBHOOK_TOKEN",
115
- # "value": "${{ secrets.DISCORD_WEBHOOK_TOKEN }}",
116
- # "type": "SECRET"
117
- # },
118
- # {
119
- # "valueName": "OVERSEER_SECRET_KEY",
120
- # "value": "${{ secrets.OVERSEER_SECRET_KEY }}",
121
- # "type": "SECRET"
122
- # },
123
- #
124
- # {
125
- # "valueName": "OVERSEER_URL",
126
- # "value": "${{ vars.OVERSEER_URL }}",
127
- # "type": "VARIABLE"
128
- # }
129
- # ]
130
- #
131
- # check_dev_leftovers:
132
- # name: πŸ” Check Dev leftovers
133
- # #runs-on: ubuntu-latest
134
- # runs-on: plo-koon
135
- # timeout-minutes: 20
136
- # steps:
137
- # - name: Checkout code
138
- # uses: actions/checkout@v4
139
- #
140
- # - name: Install Node.js
141
- # uses: actions/setup-node@v2
142
- # with:
143
- # node-version: '16'
144
- #
145
- # # TODO: Check build version (to ALL packages)
146
- # - name: Check build folder
147
- # run: |
148
- # node -e "
149
- # const buildFolder = './build/';
150
- # const fs = require('fs');
151
- #
152
- # fs.readdir(buildFolder, (err, files) => {
153
- # if (!files?.length) {
154
- # console.error(
155
- # 'FDPError: ./build folder is MISSING!' +
156
- # '\nbuild the project locally before push!'
157
- # );
158
- # process.exit(1);
159
- # }
160
- #
161
- # if (files.includes('dynamo-eslint')) {
162
- # console.error(
163
- # 'FDPError: ./build contains dynamo-eslint folder which means this is a local dev build!' +
164
- # '\nrebuild the project locally before push!'
165
- # );
166
- # process.exit(1);
167
- # }
168
- # });
169
- # "
170
- #
171
- # test:
172
- # name: πŸ§ͺ Test Build
173
- # runs-on: ubuntu-latest
174
- # needs: [ check_dev_leftovers ]
175
- # timeout-minutes: 20
176
- # steps:
177
- # - name: Checkout code
178
- # uses: actions/checkout@v4
179
- #
180
- # - name: Set NPM RC
181
- # run: |
182
- # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
183
- #
184
- # - name: Get safe-chain version
185
- # run: |
186
- # VERSION=$(curl -s https://api.github.com/repos/AikidoSec/safe-chain/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/^v//')
187
- # echo "SAFE_CHAIN_VERSION=$VERSION" >> $GITHUB_ENV
188
- #
189
- # - name: Install safe-chain
190
- # run: |
191
- # curl -fsSL https://raw.githubusercontent.com/AikidoSec/safe-chain/main/install-scripts/install-safe-chain.sh | sh -s -- --ci
192
- #
193
- # - name: Install pnpm
194
- # run: |
195
- # npm i -g pnpm
1
+ # WORKSPACE-WIDE DISABLED (2026-06-19) β€” per user-request
2
+ # Az Actions-percek megtakarΓ­tΓ‘sa miatt; a CICD-t a futdevpro Overseer
3
+ # webhook-rendszere irΓ‘nyΓ­tja. A workflow-trigger NEM aktivΓ‘lΓ³dik egyetlen
4
+ # push-ra sem, amΓ­g ez a komment-blokk fent van. VisszaΓ‘llΓ­tΓ‘shoz tΓΆrΓΆld
5
+ # a header-blokkot + uncomment minden kΓΆvetkezΕ‘ sort (egy '# ' eltΓ‘volΓ­tΓ‘s).
6
+ # ═════════════════════════════════════════════════════════════════
7
+ # # =============================================================================
8
+ # # Dynamo-ESLint CI/CD β€” Overseer Pipeline Trigger
9
+ # # =============================================================================
10
+ # # Ez a workflow CSAK egy webhook-ot kuld az Overseer-nek es AZONNAL kilep.
11
+ # # A pipeline-t az Overseer FDP Runner-ek futtatjak (nem a GitHub Actions).
12
+ # #
13
+ # # A regi workflow-k a fajl vegen kommentben megtalalhatok (fallback).
14
+ # # =============================================================================
196
15
  #
197
- # - name: Install Packages
198
- # run: |
199
- # pnpm i --safe-chain-skip-minimum-package-age
16
+ # name: Trigger Pipeline
17
+ # on:
18
+ # workflow_dispatch:
19
+ # # Az org-szintu GitHub webhook kozvetlenul triggereli az Overseer-t.
20
+ # # Ez a workflow csak manualis fallback (workflow_dispatch).
200
21
  #
201
- # - name: Build
202
- # run: |
203
- # npx tsc
204
- #
205
- # - name: Install Jasmine
206
- # run: |
207
- # npm i -g jasmine
208
- #
209
- # - name: Test
210
- # run: |
211
- # jasmine
212
- #
213
- # - name: Test Pack
214
- # run: |
215
- # pnpm pack
216
- #
217
- #
218
- # check_version:
219
- # name: πŸ” Check Version
220
- # needs: [ test ]
221
- # #runs-on: ubuntu-latest
222
- # runs-on: plo-koon
223
- # timeout-minutes: 20
224
- # outputs:
225
- # version_published: ${{ steps.version_check_results.outputs.version_published }}
226
- # steps:
227
- # - name: Checkout code
228
- # uses: actions/checkout@v4
229
- #
230
- # - name: Set Package Name
231
- # run: |
232
- # echo "PACKAGE_NAME=$(node -p -e "require('./package.json').name")" >> $GITHUB_ENV
233
- #
234
- # - name: Set RC
235
- # run: |
236
- # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
237
- #
238
- # - name: Get This Version
239
- # run: |
240
- # RAW_THIS_VERSION=$(node -p -e "require('./package.json').version")
241
- # # replace ALL: 'v0' with '', '01' with '1', '.0' with '.'
242
- # RAW_THIS_VERSION=$(echo $RAW_THIS_VERSION | sed 's:v0::g' | sed 's:01:1:g' | sed -e 's:\.0:\.:g')
243
- # echo "THIS_VERSION=$RAW_THIS_VERSION" >> $GITHUB_ENV
244
- #
245
- # - name: Get Latest Version
246
- # run: |
247
- # echo "LATEST_VERSION=$(npm view ${{ env.PACKAGE_NAME }} version)" >> $GITHUB_ENV
248
- #
249
- # - name: Check All Versions
250
- # run: |
251
- # ALL_VERSIONS=$(npm view ${{ env.PACKAGE_NAME }} versions)
252
- # if echo "$ALL_VERSIONS" | grep -q "${{ env.THIS_VERSION }}"; then
253
- # echo "VERSION_PUBLISHED=true" >> $GITHUB_ENV
254
- # else
255
- # echo "VERSION_PUBLISHED=false" >> $GITHUB_ENV
256
- # fi
257
- #
258
- # - name: Version Check Results
259
- # id: version_check_results
260
- # run: |
261
- # echo package name: "${{ env.PACKAGE_NAME }}"
262
- # echo this: "${{ env.THIS_VERSION }}"
263
- # echo latest: "${{ env.LATEST_VERSION }}"
264
- # echo this is the latest: "${{ env.LATEST_VERSION == env.THIS_VERSION }}"
265
- # echo this version is published: "${{ env.VERSION_PUBLISHED }}"
266
- # echo all published versions: $(npm view ${{ env.PACKAGE_NAME }} versions)
267
- # echo "::set-output name=version_published::${{ env.VERSION_PUBLISHED }}"
268
- #
269
- # deploy:
270
- # needs: [ check_version ]
271
- # name: πŸš€ Deploy to NPM
22
+ # jobs:
23
+ # trigger:
24
+ # name: Overseer Trigger
272
25
  # runs-on: ubuntu-latest
273
- # timeout-minutes: 20
274
- # if: ${{ needs.check_version.outputs.version_published != 'true' }}
26
+ # timeout-minutes: 1
275
27
  # steps:
276
- # - name: Checkout code
277
- # uses: actions/checkout@v4
278
- #
279
- # - name: Set RC
280
- # run: |
281
- # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
282
- #
283
- # - name: Install pnpm
284
- # run: |
285
- # npm i -g pnpm
286
- #
287
- # - name: Install Packages
288
- # run: |
289
- # pnpm i
290
- #
291
- # - name: Build
292
- # run: |
293
- # npx tsc
294
- #
295
- # - name: Pack
296
- # run: |
297
- # pnpm pack
298
- #
299
- # - name: Publish
300
- # run: |
301
- # npm publish
28
+ # - uses: actions/checkout@v4
302
29
  #
303
- # build_report:
304
- # name: πŸ“Š Build Report
305
- # needs: [
306
- # notification0,
307
- # check_dev_leftovers,
308
- # test,
309
- # check_version,
310
- # deploy
311
- # ]
312
- # #runs-on: ubuntu-latest
313
- # runs-on: plo-koon
314
- # timeout-minutes: 20
315
- # if: always()
316
- # steps:
317
- #
318
- # # NEW IMPLEMENTATION using futdevpro/fdp-github-actions/send-build-report@master:
319
- # - name: Checkout code
320
- # uses: actions/checkout@v4
321
- #
322
- # - name: Send Build Report
323
- # uses: futdevpro/fdp-github-actions/send-build-report@master
30
+ # - name: Trigger Overseer Pipeline
31
+ # uses: futdevpro/fdp-github-actions/overseer-trigger@master
324
32
  # with:
325
- # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
326
- # SETTINGS: |
327
- # {
328
- # "overseerUrl": "${{ vars.OVERSEER_URL }}",
329
- # "overseerSecret": "${{ secrets.OVERSEER_SECRET_KEY }}",
330
- # "branchName": "${{ github.ref_name }}",
331
- # "repository": "${{ github.repository }}",
332
- # "runId": "${{ github.run_id }}",
333
- # "linkToAction": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
334
- # "eventDateTime": "${{ needs.notification0.outputs.start }}",
335
- # "projects": [
336
- # {
337
- # "environment": "prod",
338
- # "stepResults": [
339
- # {
340
- # "stepName": "checkDevLeftovers",
341
- # "resultCode": "${{ needs.check_dev_leftovers.result }}",
342
- # "requirement": "optional"
343
- # },
344
- # {
345
- # "stepName": "tests",
346
- # "resultCode": "${{ needs.test.result }}",
347
- # "requirement": "required"
348
- # },
349
- # {
350
- # "stepName": "checkVersion",
351
- # "resultCode": "${{ needs.check_version.result }}",
352
- # "requirement": "required"
353
- # },
354
- # {
355
- # "stepName": "deploy",
356
- # "resultCode": "${{ needs.deploy.result }}",
357
- # "requirement": "optional"
358
- # }
359
- # ]
360
- # }
361
- # ]
362
- # }
363
- #
33
+ # OVERSEER_WEBHOOK_URL: ${{ vars.OVERSEER_URL }}/pipeline-runner/webhook/github
34
+ # OVERSEER_WEBHOOK_SECRET: ${{ secrets.OVERSEER_SECRET_KEY }}
364
35
  #
365
- # end:
366
- # name: 🎯 Discord Results
367
- # needs: [
368
- # notification0,
369
- # check_secrets,
370
- # check_dev_leftovers,
371
- # test,
372
- # check_version,
373
- # deploy,
374
- # build_report
375
- # ]
376
- # #runs-on: ubuntu-latest
377
- # runs-on: plo-koon
378
- # timeout-minutes: 20
379
- # if: always()
380
- # steps:
381
- # - name: Checkout code
382
- # uses: actions/checkout@v4
383
- #
384
- # - name: Send Discord result notification
385
- # uses: futdevpro/fdp-github-actions/discord-result-notification@latest
386
- # with:
387
- # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
388
- # APPLICATION_NAME: "Dynamo-ESLint"
389
- # APPLICATION_EMOJI: "πŸ”§"
390
- # BRANCH: ${{ github.ref_name }}
391
- # RUN_NUMBER: ${{ github.run_number }}
392
- # RUN_ID: ${{ github.run_id }}
393
- # REPOSITORY: ${{ github.repository }}
394
- # START_TIME: ${{ needs.notification0.outputs.start }}
395
- # DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}
396
- # DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
397
- # STEPS_CONFIG: |
398
- # [
399
- # {
400
- # "stepName": "Secrets Check",
401
- # "stepEmoji": "πŸ”‘",
402
- # "resultCode": "${{ needs.check_secrets.result }}"
403
- # },
404
- # {
405
- # "stepName": "Dev Leftovers Check",
406
- # "stepEmoji": "πŸ”",
407
- # "resultCode": "${{ needs.check_dev_leftovers.result }}"
408
- # },
409
- # {
410
- # "stepName": "Test Build",
411
- # "stepEmoji": "πŸ§ͺ",
412
- # "resultCode": "${{ needs.test.result }}"
413
- # },
414
- # {
415
- # "stepName": "Check Version",
416
- # "stepEmoji": "πŸ”",
417
- # "resultCode": "${{ needs.check_version.result }}"
418
- # },
419
- # {
420
- # "stepName": "Deploy",
421
- # "stepEmoji": "πŸ“¦",
422
- # "resultCode": "${{ needs.deploy.result }}",
423
- # "specialSuccessEmoji": "πŸš€πŸš€πŸš€"
424
- # },
425
- # {
426
- # "stepName": "Build Report",
427
- # "stepEmoji": "πŸ“Š",
428
- # "resultCode": "${{ needs.build_report.result }}"
429
- # }
430
- # ]
36
+ # # =============================================================================
37
+ # # REGI WORKFLOW (fallback) β€” NE TOROLD!
38
+ # # =============================================================================
39
+ # # name: Test and Deploy
40
+ # # on:
41
+ # # push:
42
+ # # branches:
43
+ # # - '**'
44
+ # # permissions:
45
+ # # actions: read
46
+ # # id-token: write
47
+ # # contents: read
48
+ # # checks: write
49
+ # # issues: read
50
+ # # pull-requests: write
51
+ # # env:
52
+ # # PACKAGE_NAME: ''
53
+ # # THIS_VERSION: 0.0.0
54
+ # # LATEST_VERSION: 0.0.0
55
+ # # VERSION_PUBLISHED: true
56
+ # #
57
+ # #
58
+ # # jobs:
59
+ # # notification0:
60
+ # # name: 🏹 Discord start Notification
61
+ # # runs-on: ubuntu-latest
62
+ # # #runs-on: plo-koon
63
+ # # timeout-minutes: 20
64
+ # # outputs:
65
+ # # start: ${{ steps.mark_start.outputs.started }}
66
+ # # steps:
67
+ # # - uses: actions/checkout@v4
68
+ # # - id: mark_start
69
+ # # run: echo "started=$(date +%s)" >> "$GITHUB_OUTPUT"
70
+ # # - name: Send Discord start notification
71
+ # # uses: futdevpro/fdp-github-actions/discord-start-notification@latest
72
+ # # with:
73
+ # # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
74
+ # # APPLICATION_NAME: "Dynamo-ESLint"
75
+ # # APPLICATION_EMOJI: "πŸ”§"
76
+ # # COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
77
+ # # EVENT_DATETIME: ${{ github.event.head_commit.timestamp }}
78
+ # # DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}
79
+ # # DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
80
+ # #
81
+ # # notification0_fail_report:
82
+ # # name: πŸ’£ Discord Start Notification Fail Report
83
+ # # runs-on: ubuntu-latest
84
+ # # #runs-on: plo-koon
85
+ # # timeout-minutes: 20
86
+ # # if: always() && needs.notification0.result == 'failure'
87
+ # # needs: [notification0]
88
+ # # steps:
89
+ # # - name: send custom message with args
90
+ # # uses: appleboy/discord-action@master
91
+ # # with:
92
+ # # webhook_id: ${{ secrets.DISCORD_WEBHOOK_ID }}
93
+ # # webhook_token: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
94
+ # # message: |
95
+ # # βŒβŒβŒπŸ”§ Failed to send Discord start notification for ${{ github.repository }}! [πŸ”—](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }})
96
+ # #
97
+ # # check_secrets:
98
+ # # name: πŸ” Check Required Secrets and Variables
99
+ # # #runs-on: ubuntu-latest
100
+ # # runs-on: plo-koon
101
+ # # timeout-minutes: 20
102
+ # # steps:
103
+ # # - name: Check Required Secrets and Variables
104
+ # # uses: futdevpro/fdp-github-actions/check-secrets-and-variables@latest
105
+ # # with:
106
+ # # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
107
+ # # ITEMS_TO_CHECK: |
108
+ # # [
109
+ # # {
110
+ # # "valueName": "NPM_TOKEN",
111
+ # # "value": "${{ secrets.NPM_TOKEN }}",
112
+ # # "type": "SECRET"
113
+ # # },
114
+ # # {
115
+ # # "valueName": "DISCORD_WEBHOOK_ID",
116
+ # # "value": "${{ secrets.DISCORD_WEBHOOK_ID }}",
117
+ # # "type": "SECRET"
118
+ # # },
119
+ # # {
120
+ # # "valueName": "DISCORD_WEBHOOK_TOKEN",
121
+ # # "value": "${{ secrets.DISCORD_WEBHOOK_TOKEN }}",
122
+ # # "type": "SECRET"
123
+ # # },
124
+ # # {
125
+ # # "valueName": "OVERSEER_SECRET_KEY",
126
+ # # "value": "${{ secrets.OVERSEER_SECRET_KEY }}",
127
+ # # "type": "SECRET"
128
+ # # },
129
+ # #
130
+ # # {
131
+ # # "valueName": "OVERSEER_URL",
132
+ # # "value": "${{ vars.OVERSEER_URL }}",
133
+ # # "type": "VARIABLE"
134
+ # # }
135
+ # # ]
136
+ # #
137
+ # # check_dev_leftovers:
138
+ # # name: πŸ” Check Dev leftovers
139
+ # # #runs-on: ubuntu-latest
140
+ # # runs-on: plo-koon
141
+ # # timeout-minutes: 20
142
+ # # steps:
143
+ # # - name: Checkout code
144
+ # # uses: actions/checkout@v4
145
+ # #
146
+ # # - name: Install Node.js
147
+ # # uses: actions/setup-node@v2
148
+ # # with:
149
+ # # node-version: '16'
150
+ # #
151
+ # # # TODO: Check build version (to ALL packages)
152
+ # # - name: Check build folder
153
+ # # run: |
154
+ # # node -e "
155
+ # # const buildFolder = './build/';
156
+ # # const fs = require('fs');
157
+ # #
158
+ # # fs.readdir(buildFolder, (err, files) => {
159
+ # # if (!files?.length) {
160
+ # # console.error(
161
+ # # 'FDPError: ./build folder is MISSING!' +
162
+ # # '\nbuild the project locally before push!'
163
+ # # );
164
+ # # process.exit(1);
165
+ # # }
166
+ # #
167
+ # # if (files.includes('dynamo-eslint')) {
168
+ # # console.error(
169
+ # # 'FDPError: ./build contains dynamo-eslint folder which means this is a local dev build!' +
170
+ # # '\nrebuild the project locally before push!'
171
+ # # );
172
+ # # process.exit(1);
173
+ # # }
174
+ # # });
175
+ # # "
176
+ # #
177
+ # # test:
178
+ # # name: πŸ§ͺ Test Build
179
+ # # runs-on: ubuntu-latest
180
+ # # needs: [ check_dev_leftovers ]
181
+ # # timeout-minutes: 20
182
+ # # steps:
183
+ # # - name: Checkout code
184
+ # # uses: actions/checkout@v4
185
+ # #
186
+ # # - name: Set NPM RC
187
+ # # run: |
188
+ # # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
189
+ # #
190
+ # # - name: Get safe-chain version
191
+ # # run: |
192
+ # # VERSION=$(curl -s https://api.github.com/repos/AikidoSec/safe-chain/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/' | sed 's/^v//')
193
+ # # echo "SAFE_CHAIN_VERSION=$VERSION" >> $GITHUB_ENV
194
+ # #
195
+ # # - name: Install safe-chain
196
+ # # run: |
197
+ # # curl -fsSL https://raw.githubusercontent.com/AikidoSec/safe-chain/main/install-scripts/install-safe-chain.sh | sh -s -- --ci
198
+ # #
199
+ # # - name: Install pnpm
200
+ # # run: |
201
+ # # npm i -g pnpm
202
+ # #
203
+ # # - name: Install Packages
204
+ # # run: |
205
+ # # pnpm i --safe-chain-skip-minimum-package-age
206
+ # #
207
+ # # - name: Build
208
+ # # run: |
209
+ # # npx tsc
210
+ # #
211
+ # # - name: Install Jasmine
212
+ # # run: |
213
+ # # npm i -g jasmine
214
+ # #
215
+ # # - name: Test
216
+ # # run: |
217
+ # # jasmine
218
+ # #
219
+ # # - name: Test Pack
220
+ # # run: |
221
+ # # pnpm pack
222
+ # #
223
+ # #
224
+ # # check_version:
225
+ # # name: πŸ” Check Version
226
+ # # needs: [ test ]
227
+ # # #runs-on: ubuntu-latest
228
+ # # runs-on: plo-koon
229
+ # # timeout-minutes: 20
230
+ # # outputs:
231
+ # # version_published: ${{ steps.version_check_results.outputs.version_published }}
232
+ # # steps:
233
+ # # - name: Checkout code
234
+ # # uses: actions/checkout@v4
235
+ # #
236
+ # # - name: Set Package Name
237
+ # # run: |
238
+ # # echo "PACKAGE_NAME=$(node -p -e "require('./package.json').name")" >> $GITHUB_ENV
239
+ # #
240
+ # # - name: Set RC
241
+ # # run: |
242
+ # # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
243
+ # #
244
+ # # - name: Get This Version
245
+ # # run: |
246
+ # # RAW_THIS_VERSION=$(node -p -e "require('./package.json').version")
247
+ # # # replace ALL: 'v0' with '', '01' with '1', '.0' with '.'
248
+ # # RAW_THIS_VERSION=$(echo $RAW_THIS_VERSION | sed 's:v0::g' | sed 's:01:1:g' | sed -e 's:\.0:\.:g')
249
+ # # echo "THIS_VERSION=$RAW_THIS_VERSION" >> $GITHUB_ENV
250
+ # #
251
+ # # - name: Get Latest Version
252
+ # # run: |
253
+ # # echo "LATEST_VERSION=$(npm view ${{ env.PACKAGE_NAME }} version)" >> $GITHUB_ENV
254
+ # #
255
+ # # - name: Check All Versions
256
+ # # run: |
257
+ # # ALL_VERSIONS=$(npm view ${{ env.PACKAGE_NAME }} versions)
258
+ # # if echo "$ALL_VERSIONS" | grep -q "${{ env.THIS_VERSION }}"; then
259
+ # # echo "VERSION_PUBLISHED=true" >> $GITHUB_ENV
260
+ # # else
261
+ # # echo "VERSION_PUBLISHED=false" >> $GITHUB_ENV
262
+ # # fi
263
+ # #
264
+ # # - name: Version Check Results
265
+ # # id: version_check_results
266
+ # # run: |
267
+ # # echo package name: "${{ env.PACKAGE_NAME }}"
268
+ # # echo this: "${{ env.THIS_VERSION }}"
269
+ # # echo latest: "${{ env.LATEST_VERSION }}"
270
+ # # echo this is the latest: "${{ env.LATEST_VERSION == env.THIS_VERSION }}"
271
+ # # echo this version is published: "${{ env.VERSION_PUBLISHED }}"
272
+ # # echo all published versions: $(npm view ${{ env.PACKAGE_NAME }} versions)
273
+ # # echo "::set-output name=version_published::${{ env.VERSION_PUBLISHED }}"
274
+ # #
275
+ # # deploy:
276
+ # # needs: [ check_version ]
277
+ # # name: πŸš€ Deploy to NPM
278
+ # # runs-on: ubuntu-latest
279
+ # # timeout-minutes: 20
280
+ # # if: ${{ needs.check_version.outputs.version_published != 'true' }}
281
+ # # steps:
282
+ # # - name: Checkout code
283
+ # # uses: actions/checkout@v4
284
+ # #
285
+ # # - name: Set RC
286
+ # # run: |
287
+ # # echo "//registry.npmjs.org/:_authToken=${{ secrets.NPM_TOKEN }}" > ~/.npmrc
288
+ # #
289
+ # # - name: Install pnpm
290
+ # # run: |
291
+ # # npm i -g pnpm
292
+ # #
293
+ # # - name: Install Packages
294
+ # # run: |
295
+ # # pnpm i
296
+ # #
297
+ # # - name: Build
298
+ # # run: |
299
+ # # npx tsc
300
+ # #
301
+ # # - name: Pack
302
+ # # run: |
303
+ # # pnpm pack
304
+ # #
305
+ # # - name: Publish
306
+ # # run: |
307
+ # # npm publish
308
+ # #
309
+ # # build_report:
310
+ # # name: πŸ“Š Build Report
311
+ # # needs: [
312
+ # # notification0,
313
+ # # check_dev_leftovers,
314
+ # # test,
315
+ # # check_version,
316
+ # # deploy
317
+ # # ]
318
+ # # #runs-on: ubuntu-latest
319
+ # # runs-on: plo-koon
320
+ # # timeout-minutes: 20
321
+ # # if: always()
322
+ # # steps:
323
+ # #
324
+ # # # NEW IMPLEMENTATION using futdevpro/fdp-github-actions/send-build-report@master:
325
+ # # - name: Checkout code
326
+ # # uses: actions/checkout@v4
327
+ # #
328
+ # # - name: Send Build Report
329
+ # # uses: futdevpro/fdp-github-actions/send-build-report@master
330
+ # # with:
331
+ # # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
332
+ # # SETTINGS: |
333
+ # # {
334
+ # # "overseerUrl": "${{ vars.OVERSEER_URL }}",
335
+ # # "overseerSecret": "${{ secrets.OVERSEER_SECRET_KEY }}",
336
+ # # "branchName": "${{ github.ref_name }}",
337
+ # # "repository": "${{ github.repository }}",
338
+ # # "runId": "${{ github.run_id }}",
339
+ # # "linkToAction": "https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}",
340
+ # # "eventDateTime": "${{ needs.notification0.outputs.start }}",
341
+ # # "projects": [
342
+ # # {
343
+ # # "environment": "prod",
344
+ # # "stepResults": [
345
+ # # {
346
+ # # "stepName": "checkDevLeftovers",
347
+ # # "resultCode": "${{ needs.check_dev_leftovers.result }}",
348
+ # # "requirement": "optional"
349
+ # # },
350
+ # # {
351
+ # # "stepName": "tests",
352
+ # # "resultCode": "${{ needs.test.result }}",
353
+ # # "requirement": "required"
354
+ # # },
355
+ # # {
356
+ # # "stepName": "checkVersion",
357
+ # # "resultCode": "${{ needs.check_version.result }}",
358
+ # # "requirement": "required"
359
+ # # },
360
+ # # {
361
+ # # "stepName": "deploy",
362
+ # # "resultCode": "${{ needs.deploy.result }}",
363
+ # # "requirement": "optional"
364
+ # # }
365
+ # # ]
366
+ # # }
367
+ # # ]
368
+ # # }
369
+ # #
370
+ # #
371
+ # # end:
372
+ # # name: 🎯 Discord Results
373
+ # # needs: [
374
+ # # notification0,
375
+ # # check_secrets,
376
+ # # check_dev_leftovers,
377
+ # # test,
378
+ # # check_version,
379
+ # # deploy,
380
+ # # build_report
381
+ # # ]
382
+ # # #runs-on: ubuntu-latest
383
+ # # runs-on: plo-koon
384
+ # # timeout-minutes: 20
385
+ # # if: always()
386
+ # # steps:
387
+ # # - name: Checkout code
388
+ # # uses: actions/checkout@v4
389
+ # #
390
+ # # - name: Send Discord result notification
391
+ # # uses: futdevpro/fdp-github-actions/discord-result-notification@latest
392
+ # # with:
393
+ # # NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
394
+ # # APPLICATION_NAME: "Dynamo-ESLint"
395
+ # # APPLICATION_EMOJI: "πŸ”§"
396
+ # # BRANCH: ${{ github.ref_name }}
397
+ # # RUN_NUMBER: ${{ github.run_number }}
398
+ # # RUN_ID: ${{ github.run_id }}
399
+ # # REPOSITORY: ${{ github.repository }}
400
+ # # START_TIME: ${{ needs.notification0.outputs.start }}
401
+ # # DISCORD_WEBHOOK_ID: ${{ secrets.DISCORD_WEBHOOK_ID }}
402
+ # # DISCORD_WEBHOOK_TOKEN: ${{ secrets.DISCORD_WEBHOOK_TOKEN }}
403
+ # # STEPS_CONFIG: |
404
+ # # [
405
+ # # {
406
+ # # "stepName": "Secrets Check",
407
+ # # "stepEmoji": "πŸ”‘",
408
+ # # "resultCode": "${{ needs.check_secrets.result }}"
409
+ # # },
410
+ # # {
411
+ # # "stepName": "Dev Leftovers Check",
412
+ # # "stepEmoji": "πŸ”",
413
+ # # "resultCode": "${{ needs.check_dev_leftovers.result }}"
414
+ # # },
415
+ # # {
416
+ # # "stepName": "Test Build",
417
+ # # "stepEmoji": "πŸ§ͺ",
418
+ # # "resultCode": "${{ needs.test.result }}"
419
+ # # },
420
+ # # {
421
+ # # "stepName": "Check Version",
422
+ # # "stepEmoji": "πŸ”",
423
+ # # "resultCode": "${{ needs.check_version.result }}"
424
+ # # },
425
+ # # {
426
+ # # "stepName": "Deploy",
427
+ # # "stepEmoji": "πŸ“¦",
428
+ # # "resultCode": "${{ needs.deploy.result }}",
429
+ # # "specialSuccessEmoji": "πŸš€πŸš€πŸš€"
430
+ # # },
431
+ # # {
432
+ # # "stepName": "Build Report",
433
+ # # "stepEmoji": "πŸ“Š",
434
+ # # "resultCode": "${{ needs.build_report.result }}"
435
+ # # }
436
+ # # ]
@@ -74,7 +74,10 @@ module.exports = [
74
74
  // 2026-06-05: warn-ra allitva, hogy a Signal-first komponensek (button-new,
75
75
  // form-new, field-new, ...) build-jet ne tortje, viszont legacy
76
76
  // zone.js-alapΓΊ expensive-call patternek meg felgyulladjanak.
77
- '@angular-eslint/template/no-call-expression': 'warn',
77
+ // 2026-06-23: a signal-getterek (`_$`-suffix) NARROW exemptet kapnak (allowSuffix),
78
+ // mert a `()` invocation Angular 18 signal-ben a KANONIKUS read-pattern, nem anti-pattern;
79
+ // a valodi (nem-signal) metodus-hivasok templateben tovabbra is warn-olnak.
80
+ '@angular-eslint/template/no-call-expression': ['warn', { allowSuffix: '_$' }],
78
81
  '@angular-eslint/template/no-duplicate-attributes': 'error',
79
82
  '@angular-eslint/template/no-negated-async': 'error',
80
83
  '@angular-eslint/template/use-track-by-function': 'error',
@@ -1 +1 @@
1
- {"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC/D,MAAM,qBAAqB,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AAChF,MAAM,qBAAqB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa;SACjC;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,2CAA2C,EAAE,OAAO;YACpD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,qBAAqB;YAC7B,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,qBAAqB;SAClD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,OAAO;YACzD,iCAAiC,EAAE,OAAO;YAC1C,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,4EAA4E;YAC5E,gEAAgE;YAChE,8DAA8D;YAC9D,6CAA6C,EAAE,MAAM;YACrD,kDAAkD,EAAE,OAAO;YAC3D,2CAA2C,EAAE,OAAO;YACpD,gDAAgD,EAAE,OAAO;YAEzD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"ngx.js","sourceRoot":"","sources":["../../src/configs/ngx.ts"],"names":[],"mappings":"AAAA,MAAM,aAAa,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;AACxC,MAAM,aAAa,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAC/D,MAAM,qBAAqB,GAAG,OAAO,CAAC,wCAAwC,CAAC,CAAC;AAChF,MAAM,qBAAqB,GAAG,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAEzE;;;;GAIG;AACH,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,aAAa;IAChB;QACE,KAAK,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;QAC9B,eAAe,EAAE;YACf,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,eAAe;YACnC,OAAO,EAAE;gBACP,kBAAkB;gBAClB,MAAM,EAAE,UAAU;gBAClB,QAAQ,EAAE,UAAU;gBACpB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;gBACnB,MAAM,EAAE,UAAU;gBAClB,MAAM,EAAE,UAAU;gBAClB,SAAS,EAAE,UAAU;gBACrB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,UAAU;aACpB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,iBAAiB,EAAE,aAAa;SACjC;QACD,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK;YACzB,yBAAyB;YACzB,oCAAoC,EAAE,OAAO;YAC7C,oCAAoC,EAAE,OAAO;YAC7C,0CAA0C,EAAE,OAAO;YACnD,2CAA2C,EAAE,OAAO;YACpD,iCAAiC,EAAE,OAAO;YAC1C,kCAAkC,EAAE,OAAO;YAC3C,8CAA8C,EAAE,OAAO;YACvD,yCAAyC,EAAE,OAAO;YAClD,8CAA8C,EAAE,OAAO;YAEvD,4CAA4C;YAC5C,qCAAqC,EAAE,MAAM;YAC7C,2CAA2C,EAAE,MAAM;YACnD,sCAAsC,EAAE,MAAM;SAC/C;KACF;IACD;QACE,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,eAAe,EAAE;YACf,MAAM,EAAE,qBAAqB;YAC7B,aAAa,EAAE;gBACb,WAAW,EAAE,QAAQ;gBACrB,UAAU,EAAE,QAAQ;aACrB;SACF;QACD,OAAO,EAAE;YACP,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO;YAC3B,0BAA0B,EAAE,qBAAqB;SAClD;QACD,KAAK,EAAE;YACL,wCAAwC,EAAE,OAAO;YACjD,gDAAgD,EAAE,OAAO;YACzD,iCAAiC,EAAE,OAAO;YAC1C,0EAA0E;YAC1E,yEAAyE;YACzE,yEAAyE;YACzE,6DAA6D;YAC7D,4EAA4E;YAC5E,gEAAgE;YAChE,8DAA8D;YAC9D,oFAAoF;YACpF,2FAA2F;YAC3F,4EAA4E;YAC5E,6CAA6C,EAAE,CAAE,MAAM,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;YAC/E,kDAAkD,EAAE,OAAO;YAC3D,2CAA2C,EAAE,OAAO;YACpD,gDAAgD,EAAE,OAAO;YAEzD,kEAAkE;YAClE,8CAA8C,EAAE,MAAM;YACtD,2CAA2C,EAAE,MAAM;YACnD,qCAAqC,EAAE,MAAM;YAC7C,sCAAsC,EAAE,MAAM;SAC/C;KACF;CACF,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@futdevpro/dynamo-eslint",
3
- "version": "1.15.16",
3
+ "version": "1.15.19",
4
4
  "description": "Shared ESLint configs, Dynamo-powered plugin and validators for FutDevPro stacks",
5
5
  "author": "Future Development Program Ltd.",
6
6
  "license": "ISC",
@@ -76,7 +76,10 @@ module.exports = [
76
76
  // 2026-06-05: warn-ra allitva, hogy a Signal-first komponensek (button-new,
77
77
  // form-new, field-new, ...) build-jet ne tortje, viszont legacy
78
78
  // zone.js-alapΓΊ expensive-call patternek meg felgyulladjanak.
79
- '@angular-eslint/template/no-call-expression': 'warn',
79
+ // 2026-06-23: a signal-getterek (`_$`-suffix) NARROW exemptet kapnak (allowSuffix),
80
+ // mert a `()` invocation Angular 18 signal-ben a KANONIKUS read-pattern, nem anti-pattern;
81
+ // a valodi (nem-signal) metodus-hivasok templateben tovabbra is warn-olnak.
82
+ '@angular-eslint/template/no-call-expression': [ 'warn', { allowSuffix: '_$' }],
80
83
  '@angular-eslint/template/no-duplicate-attributes': 'error',
81
84
  '@angular-eslint/template/no-negated-async': 'error',
82
85
  '@angular-eslint/template/use-track-by-function': 'error',