@supersoniks/concorde 4.9.92 → 4.9.94

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 (111) hide show
  1. package/ai/cursor/rules/concorde.mdc +7 -0
  2. package/ai/jetbrains/rules/concorde.md +6 -0
  3. package/ai/skills/concorde/SKILL.md +48 -0
  4. package/build-infos.json +1 -1
  5. package/concorde-core.bundle.js +299 -292
  6. package/concorde-core.es.js +10139 -6035
  7. package/dist/concorde-core.bundle.js +299 -292
  8. package/dist/concorde-core.es.js +10139 -6035
  9. package/dist/docs-mock-api-sw.js +110 -0
  10. package/dist/docs-mock-api-sw.js.map +3 -3
  11. package/dist/js/core/components/functional/functional.js +1 -0
  12. package/dist/js/core/components/functional/functional.js.map +1 -1
  13. package/dist/js/core/components/functional/jsonata/jsonata.js +119 -0
  14. package/dist/js/core/components/functional/jsonata/jsonata.js.map +1 -0
  15. package/dist/js/core/components/ui/button/button.js +1 -1
  16. package/dist/js/core/components/ui/button/button.js.map +1 -1
  17. package/dist/js/core/decorators/Subscriber.js +1 -0
  18. package/dist/js/core/decorators/Subscriber.js.map +1 -1
  19. package/dist/js/core/decorators/api.js +108 -16
  20. package/dist/js/core/decorators/api.js.map +1 -1
  21. package/dist/js/core/decorators/subscriber/derive.js +60 -0
  22. package/dist/js/core/decorators/subscriber/derive.js.map +1 -0
  23. package/dist/js/core/utils/api.js +29 -8
  24. package/dist/js/core/utils/api.js.map +1 -1
  25. package/dist/js/core/utils/derive.js +246 -0
  26. package/dist/js/core/utils/derive.js.map +1 -0
  27. package/dist/js/core/utils/jsonataHelpers.js +69 -0
  28. package/dist/js/core/utils/jsonataHelpers.js.map +1 -0
  29. package/dist/js/core/utils/jsonataRuntime.js +75 -0
  30. package/dist/js/core/utils/jsonataRuntime.js.map +1 -0
  31. package/dist/js/utils.js +2 -0
  32. package/dist/js/utils.js.map +1 -1
  33. package/dist/types/core/components/functional/functional.d.ts +1 -0
  34. package/dist/types/core/components/functional/functional.d.ts.map +1 -1
  35. package/dist/types/core/components/functional/jsonata/jsonata.d.ts +29 -0
  36. package/dist/types/core/components/functional/jsonata/jsonata.d.ts.map +1 -0
  37. package/dist/types/core/components/ui/button/button.d.ts +1 -1
  38. package/dist/types/core/components/ui/button/button.d.ts.map +1 -1
  39. package/dist/types/core/components/ui/form/checkbox/checkbox.d.ts +3 -3
  40. package/dist/types/core/components/ui/form/input/input.d.ts +3 -3
  41. package/dist/types/core/components/ui/form/input-autocomplete/input-autocomplete.d.ts +3 -3
  42. package/dist/types/core/components/ui/form/textarea/textarea.d.ts +3 -3
  43. package/dist/types/core/decorators/Subscriber.d.ts +2 -0
  44. package/dist/types/core/decorators/Subscriber.d.ts.map +1 -1
  45. package/dist/types/core/decorators/api.d.ts +21 -12
  46. package/dist/types/core/decorators/api.d.ts.map +1 -1
  47. package/dist/types/core/decorators/subscriber/derive.d.ts +30 -0
  48. package/dist/types/core/decorators/subscriber/derive.d.ts.map +1 -0
  49. package/dist/types/core/utils/api.d.ts +1 -1
  50. package/dist/types/core/utils/api.d.ts.map +1 -1
  51. package/dist/types/core/utils/derive.d.ts +40 -0
  52. package/dist/types/core/utils/derive.d.ts.map +1 -0
  53. package/dist/types/core/utils/jsonataHelpers.d.ts +15 -0
  54. package/dist/types/core/utils/jsonataHelpers.d.ts.map +1 -0
  55. package/dist/types/core/utils/jsonataRuntime.d.ts +13 -0
  56. package/dist/types/core/utils/jsonataRuntime.d.ts.map +1 -0
  57. package/dist/types/mixins.d.ts +3 -3
  58. package/dist/types/utils.d.ts +2 -0
  59. package/dist/types/utils.d.ts.map +1 -1
  60. package/docs/assets/{index-DURr6O71.js → index-DpIkksht.js} +652 -479
  61. package/docs/crawl/docs/_decorators/get.html +27 -6
  62. package/docs/crawl/docs/_decorators/patch.html +6 -0
  63. package/docs/crawl/docs/_decorators/post.html +8 -0
  64. package/docs/crawl/docs/_decorators/put.html +6 -0
  65. package/docs/crawl/hubs/decorators.html +36 -31
  66. package/docs/crawl/hubs/remote-data.html +36 -31
  67. package/docs/index.html +1 -1
  68. package/docs/llms-full.txt +47 -3
  69. package/docs/src/docs/_decorators/get.md +31 -0
  70. package/docs/src/docs/_decorators/patch.md +9 -0
  71. package/docs/src/docs/_decorators/post.md +11 -0
  72. package/docs/src/docs/_decorators/put.md +9 -0
  73. package/docs/src/docs/search/docs-search.json +120 -5
  74. package/docs/src/tsconfig.json +268 -268
  75. package/package.json +28 -3
  76. package/public/docs-mock-api-sw.js +110 -0
  77. package/public/docs-mock-api-sw.js.map +3 -3
  78. package/src/core/components/functional/functional.ts +1 -0
  79. package/src/core/components/functional/jsonata/jsonata.md +56 -0
  80. package/src/core/components/functional/jsonata/jsonata.spec.ts +202 -0
  81. package/src/core/components/functional/jsonata/jsonata.ts +116 -0
  82. package/src/core/components/ui/button/button.ts +2 -2
  83. package/src/core/decorators/Subscriber.ts +2 -0
  84. package/src/core/decorators/api.post.spec.ts +99 -4
  85. package/src/core/decorators/api.spec.ts +90 -0
  86. package/src/core/decorators/api.ts +212 -92
  87. package/src/core/decorators/subscriber/derive.ts +95 -0
  88. package/src/core/utils/api.spec.ts +73 -0
  89. package/src/core/utils/api.ts +44 -11
  90. package/src/core/utils/derive.spec.ts +190 -0
  91. package/src/core/utils/derive.ts +357 -0
  92. package/src/core/utils/jsonataHelpers.ts +100 -0
  93. package/src/core/utils/jsonataRuntime.ts +88 -0
  94. package/src/docs/_core-concept/dataFlow.md +9 -0
  95. package/src/docs/_decorators/get.md +31 -0
  96. package/src/docs/_decorators/patch.md +9 -0
  97. package/src/docs/_decorators/post.md +11 -0
  98. package/src/docs/_decorators/put.md +9 -0
  99. package/src/docs/_misc/docs-mock-api.md +3 -0
  100. package/src/docs/components/docs-demo-sources.ts +40 -0
  101. package/src/docs/docs.ts +1 -0
  102. package/src/docs/example/decorators-demo-post.ts +70 -0
  103. package/src/docs/example/decorators-demo-subscribe-publish-get-demos.ts +59 -0
  104. package/src/docs/example/docs-jsonata-demos.ts +128 -0
  105. package/src/docs/mock-api/fixtures-jsonata.ts +131 -0
  106. package/src/docs/mock-api/router.ts +26 -0
  107. package/src/docs/navigation/navigation.ts +4 -0
  108. package/src/docs/search/docs-search.json +300 -5
  109. package/src/tsconfig.json +18 -0
  110. package/src/tsconfig.tsbuildinfo +1 -1
  111. package/src/utils.ts +13 -0
@@ -23,6 +23,8 @@ Migration get/set/dp : `.cursor/skills/concorde-get-set-dp/SKILL.md`
23
23
  ## Interdits (nouveau code)
24
24
 
25
25
  - `sonic-fetch` → `sonic-queue` + filtre, ou `@get`
26
+ - Les décorateurs API (`@get`, `@post`, `@put`, `@patch`) s'adaptent aux
27
+ propriétés et aux méthodes
26
28
  - `@onAssign` → `@handle` + `DataProviderKey`
27
29
  - `@bind` → `@subscribe` + `DataProviderKey<T, U>` (pas sur composants métier)
28
30
  - `data-bind` HTML → `@subscribe` / `sub()`
@@ -46,6 +48,11 @@ Placeholder `${prop}` = chaîne normale, résolu depuis le composant hôte.
46
48
  ## Scope / theme
47
49
 
48
50
  - **Scope** : `<sonic-scope serviceURL="…">` · `@get(endpoint)` ou `@get(endpoint, apiConfigKey)` — skills `concorde-scope`
51
+ - **GET + handler** : `@get(endpoint)` sur une méthode ; le handler reçoit
52
+ `result`, `response`, `request`, ou `undefined`. Conserver le handle retourné
53
+ par `get` pour `refetch`.
54
+ - **Write + handler** : même modèle avec `post`, `put`, `patch` ; `@send`
55
+ reste le déclencheur explicite.
49
56
  - **Theme** : `<sonic-theme background color font>` · `--sc-*` — skill `concorde-theme`
50
57
 
51
58
  ## Migration Subscriber / sonic-fetch (piège fréquent)
@@ -16,6 +16,8 @@ Référence doc : fichiers `.md` dans `node_modules/@supersoniks/concorde/src/`.
16
16
  ## Interdits (nouveau code)
17
17
 
18
18
  - sonic-fetch → sonic-queue + filtre, ou @get
19
+ - Les décorateurs API (@get, @post, @put, @patch) s'adaptent aux propriétés
20
+ et aux méthodes
19
21
  - @onAssign → @handle + DataProviderKey
20
22
  - data-bind HTML → @subscribe / sub()
21
23
  - sonic-input + @input → formDataProvider + name
@@ -31,6 +33,10 @@ Placeholder `${prop}` dans une chaîne normale : `"users.${userIndex}"`.
31
33
  - **Scope** (`sonic-scope`) : `serviceURL`, `formDataProvider`, icônes — skill `concorde-scope`
32
34
  - **Theme** (`sonic-theme`) : `--sc-*` tokens, dark mode — skill `concorde-theme`
33
35
  - `@get(endpoint)` sans clé config → hérite scope ; `@get(endpoint, apiConfigKey)` → DataProvider
36
+ - `@get(endpoint)` sur une méthode reçoit `result`, `response`, `request`, ou
37
+ `undefined` ; conserver le handle retourné par `get` pour `refetch`
38
+ - Même modèle avec `post`, `put`, `patch` ; `@send` reste le déclencheur
39
+ explicite de l'opération
34
40
  - Modale / portal : préférer `apiConfigKey` si pas de scope DOM fiable
35
41
 
36
42
  ## Migration Subscriber / sonic-fetch
@@ -29,6 +29,9 @@ Référence complète : skill **`concorde-imports`** (`.cursor/skills/concorde-i
29
29
  - **Ne pas** introduire `@onAssign` — préférer `@handle` + `DataProviderKey`.
30
30
  - **Ne pas** utiliser **`@bind`** sur les composants métier — préférer **`@subscribe`** + `DataProviderKey<T, U>` (typage + placeholders `${prop}` sur l’hôte).
31
31
  - **Ne pas** utiliser **`sonic-fetch`** — préférer **`sonic-queue`** (+ filtre `formDataProvider`) ou **`@get`** + `Endpoint`.
32
+ - Les décorateurs API **`@get`**, **`@post`**, **`@put`** et **`@patch`**
33
+ s'adaptent aux propriétés et aux méthodes ; la méthode reçoit le
34
+ `ApiResult` complet.
32
35
  - **Ne pas** importer **`PublisherManager`** — utiliser **`get` / `set`** (réexport Concorde ou wrapper projet).
33
36
  - **Ne pas** promouvoir les templates HTML (`<template>`, `data-value`) pour **`sonic-list`** / **`sonic-queue`** — préférer **`.items`**, **`.noItems`**, **`.skeleton`**, **`.separator`** (binding propriété Lit obligatoire pour les fonctions).
34
37
 
@@ -94,6 +97,47 @@ users.path;
94
97
 
95
98
  Utilisé avec `@get(endpoint)` ou `@get(endpoint, apiConfigKey)` — voir **Scope** ci-dessous.
96
99
 
100
+ ### Décorateurs API sur une méthode
101
+
102
+ `@get`, `@post`, `@put` et `@patch` peuvent décorer une propriété ou une
103
+ méthode. En mode méthode, le callback reçoit le `ApiResult` complet :
104
+
105
+ ```typescript
106
+ @get(endpoints.ticket)
107
+ handleTicket(payload: ApiResult<PurchaseItem> | undefined) {
108
+ if (!payload?.result || !payload.response?.ok) return;
109
+ dp<PurchaseItem>(this.dataProvider).set(payload.result);
110
+ }
111
+ ```
112
+
113
+ La méthode reçoit le payload complet (`result`, `response`, `request`).
114
+ `undefined` représente un appel terminé sans payload, par exemple une erreur
115
+ réseau. Si un refetch nommé est nécessaire, conserver le handle et décorer la
116
+ méthode avec lui :
117
+
118
+ ```typescript
119
+ const ticketGet = get(endpoints.ticket);
120
+
121
+ @ticketGet
122
+ handleTicket(payload: ApiResult<PurchaseItem> | undefined) {}
123
+
124
+ @refetch(ticketGet)
125
+ reloadTicket() {}
126
+ ```
127
+
128
+ `@send(handle)` reste le décorateur de méthode qui déclenche explicitement une
129
+ écriture ; les mutations du body, triggers et polling conservent leur
130
+ comportement.
131
+
132
+ Exemple écriture :
133
+
134
+ ```typescript
135
+ @post(endpoints.ticket, ticketBodyKey)
136
+ handleTicketCreation(payload: ApiResult<PurchaseItem> | undefined) {
137
+ if (payload?.response?.ok) console.log(payload.result);
138
+ }
139
+ ```
140
+
97
141
  ## Scope — defaults hérités
98
142
 
99
143
  Skill dédié : **`concorde-scope`**.
@@ -270,6 +314,8 @@ Propriétés Lit (recommandé) :
270
314
  | Lire (affichage Lit) | `@subscribe(dpKey.leaf)` + `@state()` — **une fois par champ** du `render()` |
271
315
  | Effet typé | `@handle(dpKey.a, …)` |
272
316
  | API HTTP | `@get(Endpoint)` ou `@get(Endpoint, apiConfigKey)` |
317
+ | Effet après GET | `@get(endpoint)` sur une méthode |
318
+ | Effet après écriture | `@post` / `@put` / `@patch` sur une méthode |
273
319
  | Écriture classe (hors form) | `@publish` |
274
320
  | Lecture classe (hors form) | `@subscribe` + `DataProviderKey` — pas `@bind` |
275
321
 
@@ -298,3 +344,5 @@ Propriétés Lit (recommandé) :
298
344
  - **Config API app-wide** : `<sonic-scope serviceURL="…">` ou `DataProviderKey<APIConfiguration>`.
299
345
  - **Theme / couleurs** : `<sonic-theme>` + CSS `--sc-*`.
300
346
  - **Clé dynamique** : `"chemin.${prop}"` + `DataProviderKey<T, { prop: … }>`.
347
+ - **GET avec effet de bord** : `@get(endpoint)` sur une méthode ; conserver
348
+ `const request = get(endpoint)` si un refetch nommé est nécessaire.
package/build-infos.json CHANGED
@@ -1 +1 @@
1
- {"date":1789469206}
1
+ {"date":1790327430}