@supersoniks/concorde 3.3.2 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/build-infos.json +1 -1
  2. package/concorde-core.bundle.js +154 -154
  3. package/concorde-core.es.js +2366 -2356
  4. package/dist/concorde-core.bundle.js +154 -154
  5. package/dist/concorde-core.es.js +2366 -2356
  6. package/package.json +1 -4
  7. package/src/core/_types/types.ts +1 -1
  8. package/src/core/components/functional/queue/queue.ts +3 -4
  9. package/src/core/components/functional/states/states.demo.ts +5 -2
  10. package/src/core/components/functional/states/states.spec.ts +14 -13
  11. package/src/core/components/functional/submit/submit.ts +2 -2
  12. package/src/core/components/ui/captcha/captcha.ts +16 -12
  13. package/src/core/components/ui/form/input-autocomplete/input-autocomplete.ts +41 -7
  14. package/src/core/components/ui/pop/pop.ts +6 -6
  15. package/src/core/components/ui/theme/theme.ts +3 -3
  16. package/src/core/decorators/subscriber/bind.ts +2 -2
  17. package/src/core/decorators/subscriber/onAssign.ts +6 -4
  18. package/src/core/directives/DataProvider.ts +47 -60
  19. package/src/core/directives/Wording.ts +4 -4
  20. package/src/core/mixins/FormCheckable.ts +12 -12
  21. package/src/core/mixins/FormElement.ts +1 -1
  22. package/src/core/utils/PublisherProxy.ts +260 -178
  23. package/src/core/utils/Utils.ts +3 -0
  24. package/src/core/utils/api.ts +4 -6
  25. package/src/dataprovider.ts +1 -0
  26. package/src/directives.ts +27 -13
  27. package/src/docs/_misc/on-assign.md +5 -5
  28. package/src/docs/search/docs-search.json +70 -0
  29. package/src/tsconfig.json +0 -9
  30. package/src/tsconfig.tsbuildinfo +1 -1
  31. package/src/utils.ts +2 -4
  32. package/mcp-server/COMPARISON-MCP.md +0 -176
  33. package/mcp-server/README-MCP-NODEJS.md +0 -284
  34. package/mcp-server/README-MCP.md +0 -114
  35. package/mcp-server/README.md +0 -127
  36. package/mcp-server/TECHNICAL-DOCS.md +0 -269
  37. package/mcp-server/concorde-mcp-server.js +0 -859
  38. package/mcp-server/concorde-mcp-server.py +0 -801
  39. package/mcp-server/cursor-mcp-config-advanced.json +0 -68
  40. package/mcp-server/cursor-mcp-config-nodejs.json +0 -74
  41. package/mcp-server/cursor-mcp-config.json +0 -11
  42. package/mcp-server/install-mcp-nodejs.sh +0 -104
  43. package/mcp-server/install-mcp.sh +0 -62
  44. package/mcp-server/package-lock.json +0 -147
  45. package/mcp-server/package-mcp.json +0 -40
  46. package/mcp-server/package.json +0 -40
  47. package/mcp-server/test-mcp.js +0 -107
  48. package/mcp-server/test-mcp.py +0 -73
  49. package/src/core/components/ui/toast/message-subscriber.stories.ts +0 -43
package/src/directives.ts CHANGED
@@ -1,21 +1,35 @@
1
- import * as myDataProvider from "@supersoniks/concorde/core/directives/DataProvider";
1
+ import * as directives from "@supersoniks/concorde/core/directives/DataProvider";
2
+ import {dp as pubDp, dataProvider as pubDataProvider, get as pubGet, set as pubSet} from "@supersoniks/concorde/core/utils/PublisherProxy";
2
3
 
3
4
  import {ConcordeWindow} from "./core/_types/types";
4
- export const dp = myDataProvider.dp;
5
- export const dataProvider = myDataProvider.dataProvider;
6
- export const subscribe = myDataProvider.subscribe;
7
- export const sub = myDataProvider.sub;
8
- export const get = myDataProvider.get;
9
- export const set = myDataProvider.set;
5
+ /**
6
+ * @deprecated @see pubDp
7
+ */
8
+ export const dp = pubDp;
9
+ /**
10
+ * @deprecated @see pubDataProvider
11
+ */
12
+ export const dataProvider = pubDataProvider;
13
+ export const subscribe = directives.subscribe;
14
+ export const sub = directives.sub;
15
+
16
+ /**
17
+ * @deprecated @see pubGet
18
+ */
19
+ export const get = pubGet;
20
+ /**
21
+ * @deprecated @see pubSet
22
+ */
23
+ export const set = pubSet;
10
24
 
11
25
  declare const window: ConcordeWindow;
12
26
 
13
27
  window["concorde-directives-data-provider"] = window["concorde-directives-data-provider"] || {};
14
28
  window["concorde-directives-data-provider"] = {
15
- dp: myDataProvider.dp,
16
- dataProvider: myDataProvider.dataProvider,
17
- sub: myDataProvider.sub,
18
- subscribe: myDataProvider.subscribe,
19
- get: myDataProvider.get,
20
- set: myDataProvider.set,
29
+ dp: pubDp,
30
+ dataProvider: pubDataProvider,
31
+ sub: directives.sub,
32
+ subscribe: directives.subscribe,
33
+ get: pubGet,
34
+ set: pubSet,
21
35
  };
@@ -138,7 +138,7 @@ export class DemoOnAssignDynamic extends LitElement {
138
138
  //
139
139
  @state() user: any = null;
140
140
  @state() userSettings: any = null;
141
-
141
+ //
142
142
  @onAssign("${dataProvider}.${userIndex}", "${dataProvider}Settings.${userIndex}")
143
143
  handleUserDataReady(user: any, settings: any) {
144
144
  this.user = user;
@@ -168,7 +168,7 @@ export class DemoOnAssignDynamic extends LitElement {
168
168
  settingsPublisher,
169
169
  [String(this.userIndex)]
170
170
  ) as PublisherProxy;
171
-
171
+ //
172
172
  if (userPublisher && settingPublisher) {
173
173
  // Générer de nouvelles données aléatoires
174
174
  const randomNames = [
@@ -178,7 +178,7 @@ export class DemoOnAssignDynamic extends LitElement {
178
178
  ];
179
179
  const randomThemes = ["light", "dark", "auto"];
180
180
  const randomLanguages = ["en", "fr", "es"];
181
-
181
+ //
182
182
  const randomName =
183
183
  randomNames[Math.floor(Math.random() * randomNames.length)];
184
184
  const randomEmail = `${randomName.firstName.toLowerCase()}.${randomName.lastName.toLowerCase()}@example.com`;
@@ -186,7 +186,7 @@ export class DemoOnAssignDynamic extends LitElement {
186
186
  randomThemes[Math.floor(Math.random() * randomThemes.length)];
187
187
  const randomLanguage =
188
188
  randomLanguages[Math.floor(Math.random() * randomLanguages.length)];
189
-
189
+ //
190
190
  // Mettre à jour l'utilisateur directement
191
191
  const currentUser = userPublisher.get() || {};
192
192
  userPublisher.set({
@@ -195,7 +195,7 @@ export class DemoOnAssignDynamic extends LitElement {
195
195
  lastName: randomName.lastName,
196
196
  email: randomEmail,
197
197
  });
198
-
198
+ //
199
199
  // Mettre à jour les settings directement
200
200
  settingPublisher.set({
201
201
  theme: randomTheme,
@@ -4344,6 +4344,21 @@
4344
4344
  }
4345
4345
  }
4346
4346
  },
4347
+ {
4348
+ "search": " }\n //\n render() {\n return html <div class="flex flex-col gap-2"> <sonic-select .value=${this.dataProvider} label="Users set" @change=${this.updateDataProvider} > <option value="demoUsers">First set of users</option> <option value="demoUsersAlt">Second set of users</option> </sonic-select> <sonic-input type="number" .value=${this.userIndex} @input=${this.updateUserIndex} min="0" max="9" label="Index" class="block" > </sonic-input> <sonic-button @click=${this.updateCurrentUserData} >Update current user data</sonic-button > <div class="flex flex-col gap-2 border p-2"> <div> <sonic-icon name="user" library="heroicons"></sonic-icon> ${this.user?.firstName} ${this.user?.lastName} </div> <div> <sonic-icon name="envelope" library="heroicons"></sonic-icon> ${this.user?.email} </div> </div> </div> ;\n }\n",
4349
+ "files": {
4350
+ "docs/_misc/bind.md": {
4351
+ "title": "@bind",
4352
+ "hashes": {
4353
+ "dynamic-path-driven-by-class-properties": {
4354
+ "count": 1,
4355
+ "title": "Dynamic path driven by class properties",
4356
+ "type": "paragraph"
4357
+ }
4358
+ }
4359
+ }
4360
+ }
4361
+ },
4347
4362
  {
4348
4363
  "search": "⚠️ Use a classic string literal: @bind("${dataProvider}.${profileId}.info.title"). Do not use a template literal (backticks), otherwise JavaScript would try to interpolate the value immediately.\n",
4349
4364
  "files": {
@@ -4371,6 +4386,16 @@
4371
4386
  "type": "paragraph"
4372
4387
  }
4373
4388
  }
4389
+ },
4390
+ "docs/_misc/on-assign.md": {
4391
+ "title": "@onAssign",
4392
+ "hashes": {
4393
+ "dynamic-path-driven-by-class-properties": {
4394
+ "count": 1,
4395
+ "title": "Dynamic path driven by class properties",
4396
+ "type": "paragraph"
4397
+ }
4398
+ }
4374
4399
  }
4375
4400
  }
4376
4401
  },
@@ -4434,6 +4459,51 @@
4434
4459
  }
4435
4460
  }
4436
4461
  },
4462
+ {
4463
+ "search": "You can now build the paths dynamically by referencing the host class properties inside the strings passed to @onAssign. Two placeholder syntaxes are supported:\n",
4464
+ "files": {
4465
+ "docs/_misc/on-assign.md": {
4466
+ "title": "@onAssign",
4467
+ "hashes": {
4468
+ "dynamic-path-driven-by-class-properties": {
4469
+ "count": 1,
4470
+ "title": "Dynamic path driven by class properties",
4471
+ "type": "paragraph"
4472
+ }
4473
+ }
4474
+ }
4475
+ }
4476
+ },
4477
+ {
4478
+ "search": "Each placeholder is replaced at runtime with the current value of the corresponding property. @onAssign automatically watches those properties and:\n",
4479
+ "files": {
4480
+ "docs/_misc/on-assign.md": {
4481
+ "title": "@onAssign",
4482
+ "hashes": {
4483
+ "dynamic-path-driven-by-class-properties": {
4484
+ "count": 1,
4485
+ "title": "Dynamic path driven by class properties",
4486
+ "type": "paragraph"
4487
+ }
4488
+ }
4489
+ }
4490
+ }
4491
+ },
4492
+ {
4493
+ "search": "⚠️ Use classic string literals: @onAssign("${dataProvider}.${profileId}", "settings.${profileId}"). Do not use template literals (backticks), otherwise JavaScript would try to interpolate the value immediately.\n",
4494
+ "files": {
4495
+ "docs/_misc/on-assign.md": {
4496
+ "title": "@onAssign",
4497
+ "hashes": {
4498
+ "dynamic-path-driven-by-class-properties": {
4499
+ "count": 1,
4500
+ "title": "Dynamic path driven by class properties",
4501
+ "type": "paragraph"
4502
+ }
4503
+ }
4504
+ }
4505
+ }
4506
+ },
4437
4507
  {
4438
4508
  "search": "Templates Demo",
4439
4509
  "files": {
package/src/tsconfig.json CHANGED
@@ -734,15 +734,6 @@
734
734
  "./ui/theme": [
735
735
  "/sites/concorde/src/core/components/ui/theme/theme.ts"
736
736
  ],
737
- "./message-subscriber.stories": [
738
- "/sites/concorde/src/core/components/ui/toast/message-subscriber.stories.ts"
739
- ],
740
- "./ui/message-subscriber.stories": [
741
- "/sites/concorde/src/core/components/ui/toast/message-subscriber.stories.ts"
742
- ],
743
- "./ui/toast/message-subscriber.stories": [
744
- "/sites/concorde/src/core/components/ui/toast/message-subscriber.stories.ts"
745
- ],
746
737
  "./message-subscriber": [
747
738
  "/sites/concorde/src/core/components/ui/toast/message-subscriber.ts"
748
739
  ],
@@ -1 +1 @@
1
- {"root":["./components.ts","./concorde-loaded.ts","./decorators.ts","./directives.ts","./index.ts","./mixins.ts","./utils.ts","./core/core.ts","./core/_types/types.ts","./core/components/functional/functional.ts","./core/components/functional/date/date.ts","./core/components/functional/example/example.ts","./core/components/functional/fetch/fetch.ts","./core/components/functional/if/if.test.ts","./core/components/functional/if/if.ts","./core/components/functional/list/list.demo.ts","./core/components/functional/list/list.spec.ts","./core/components/functional/list/list.ts","./core/components/functional/mix/mix.ts","./core/components/functional/queue/queue.demo.ts","./core/components/functional/queue/queue.ts","./core/components/functional/router/redirect.ts","./core/components/functional/router/router.demo.ts","./core/components/functional/router/router.spec.ts","./core/components/functional/router/router.ts","./core/components/functional/sdui/SDUIDescriptorTransformer.ts","./core/components/functional/sdui/sdui-utils.ts","./core/components/functional/sdui/sdui.ts","./core/components/functional/sdui/types.ts","./core/components/functional/sonic-scope/sonic-scope.ts","./core/components/functional/states/states.demo.ts","./core/components/functional/states/states.spec.ts","./core/components/functional/states/states.ts","./core/components/functional/submit/submit.ts","./core/components/functional/subscriber/subscriber.ts","./core/components/functional/translation/translation.ts","./core/components/functional/value/value.ts","./core/components/ui/ui.ts","./core/components/ui/_css/scroll.ts","./core/components/ui/_css/shadow.ts","./core/components/ui/_css/size.ts","./core/components/ui/_css/type.ts","./core/components/ui/alert/alert.ts","./core/components/ui/alert-messages/alert-messages.ts","./core/components/ui/badge/badge.ts","./core/components/ui/button/button.ts","./core/components/ui/captcha/altchaStyles.ts","./core/components/ui/captcha/captcha.ts","./core/components/ui/card/card-footer.ts","./core/components/ui/card/card-header-descripton.ts","./core/components/ui/card/card-header.ts","./core/components/ui/card/card-main.ts","./core/components/ui/card/card.ts","./core/components/ui/divider/divider.ts","./core/components/ui/form/checkbox/checkbox.ts","./core/components/ui/form/css/form-control.ts","./core/components/ui/form/fieldset/fieldset.ts","./core/components/ui/form/fieldset/legend-description.ts","./core/components/ui/form/fieldset/legend.ts","./core/components/ui/form/form-actions/form-actions.ts","./core/components/ui/form/form-layout/form-layout.ts","./core/components/ui/form/input/input.ts","./core/components/ui/form/input/password-helper.ts","./core/components/ui/form/input/same-value-helper.ts","./core/components/ui/form/input-autocomplete/input-autocomplete.ts","./core/components/ui/form/radio/radio.ts","./core/components/ui/form/select/select.ts","./core/components/ui/form/switch/switch.ts","./core/components/ui/form/textarea/textarea.ts","./core/components/ui/group/group.ts","./core/components/ui/icon/icon.stories.ts","./core/components/ui/icon/icon.ts","./core/components/ui/icon/icons.ts","./core/components/ui/image/image.ts","./core/components/ui/link/link.ts","./core/components/ui/loader/loader.stories.ts","./core/components/ui/loader/loader.ts","./core/components/ui/loader/styles/fixed.ts","./core/components/ui/loader/styles/inline.ts","./core/components/ui/menu/menu-item.ts","./core/components/ui/menu/menu.ts","./core/components/ui/modal/modal-actions.ts","./core/components/ui/modal/modal-close.ts","./core/components/ui/modal/modal-content.ts","./core/components/ui/modal/modal-subtitle.ts","./core/components/ui/modal/modal-title.ts","./core/components/ui/modal/modal.stories.ts","./core/components/ui/modal/modal.ts","./core/components/ui/pop/pop.ts","./core/components/ui/progress/progress.ts","./core/components/ui/table/table-caption.ts","./core/components/ui/table/table-tbody.ts","./core/components/ui/table/table-td.ts","./core/components/ui/table/table-tfoot.ts","./core/components/ui/table/table-th.ts","./core/components/ui/table/table-thead.ts","./core/components/ui/table/table-tr.ts","./core/components/ui/table/table.ts","./core/components/ui/theme/theme.ts","./core/components/ui/theme/theme-collection/core-variables.ts","./core/components/ui/theme/theme-collection/dark.ts","./core/components/ui/theme/theme-collection/light.ts","./core/components/ui/toast/message-subscriber.stories.ts","./core/components/ui/toast/message-subscriber.ts","./core/components/ui/toast/toast-item.ts","./core/components/ui/toast/toast.ts","./core/components/ui/toast/types.ts","./core/components/ui/tooltip/tooltip.ts","./core/decorators/Subscriber.ts","./core/decorators/subscriber/ancestorAttribute.ts","./core/decorators/subscriber/autoFill.ts","./core/decorators/subscriber/autoSubscribe.ts","./core/decorators/subscriber/bind.ts","./core/decorators/subscriber/common.ts","./core/decorators/subscriber/onAssign.ts","./core/directives/DataProvider.ts","./core/directives/Wording.ts","./core/mixins/Fetcher.ts","./core/mixins/FormCheckable.ts","./core/mixins/FormElement.ts","./core/mixins/FormInput.ts","./core/mixins/Subscriber.ts","./core/mixins/TemplatesContainer.ts","./core/mixins/mixins.ts","./core/utils/Arrays.ts","./core/utils/DataBindObserver.ts","./core/utils/Electron.ts","./core/utils/Format.ts","./core/utils/HTML.ts","./core/utils/LocationHandler.ts","./core/utils/Objects.ts","./core/utils/PublisherProxy.ts","./core/utils/Utils.ts","./core/utils/aesCrypto.ts","./core/utils/api.ts","./core/utils/route.spec.ts","./core/utils/route.ts","./core/utils/url-pattern.ts","./test-utils/TestUtils.ts"],"version":"5.9.2"}
1
+ {"root":["./components.ts","./concorde-loaded.ts","./dataprovider.ts","./decorators.ts","./directives.ts","./index.ts","./mixins.ts","./utils.ts","./core/core.ts","./core/_types/types.ts","./core/components/functional/functional.ts","./core/components/functional/date/date.ts","./core/components/functional/example/example.ts","./core/components/functional/fetch/fetch.ts","./core/components/functional/if/if.test.ts","./core/components/functional/if/if.ts","./core/components/functional/list/list.demo.ts","./core/components/functional/list/list.spec.ts","./core/components/functional/list/list.ts","./core/components/functional/mix/mix.ts","./core/components/functional/queue/queue.demo.ts","./core/components/functional/queue/queue.ts","./core/components/functional/router/redirect.ts","./core/components/functional/router/router.demo.ts","./core/components/functional/router/router.spec.ts","./core/components/functional/router/router.ts","./core/components/functional/sdui/SDUIDescriptorTransformer.ts","./core/components/functional/sdui/sdui-utils.ts","./core/components/functional/sdui/sdui.ts","./core/components/functional/sdui/types.ts","./core/components/functional/sonic-scope/sonic-scope.ts","./core/components/functional/states/states.demo.ts","./core/components/functional/states/states.spec.ts","./core/components/functional/states/states.ts","./core/components/functional/submit/submit.ts","./core/components/functional/subscriber/subscriber.ts","./core/components/functional/translation/translation.ts","./core/components/functional/value/value.ts","./core/components/ui/ui.ts","./core/components/ui/_css/scroll.ts","./core/components/ui/_css/shadow.ts","./core/components/ui/_css/size.ts","./core/components/ui/_css/type.ts","./core/components/ui/alert/alert.ts","./core/components/ui/alert-messages/alert-messages.ts","./core/components/ui/badge/badge.ts","./core/components/ui/button/button.ts","./core/components/ui/captcha/altchaStyles.ts","./core/components/ui/captcha/captcha.ts","./core/components/ui/card/card-footer.ts","./core/components/ui/card/card-header-descripton.ts","./core/components/ui/card/card-header.ts","./core/components/ui/card/card-main.ts","./core/components/ui/card/card.ts","./core/components/ui/divider/divider.ts","./core/components/ui/form/checkbox/checkbox.ts","./core/components/ui/form/css/form-control.ts","./core/components/ui/form/fieldset/fieldset.ts","./core/components/ui/form/fieldset/legend-description.ts","./core/components/ui/form/fieldset/legend.ts","./core/components/ui/form/form-actions/form-actions.ts","./core/components/ui/form/form-layout/form-layout.ts","./core/components/ui/form/input/input.ts","./core/components/ui/form/input/password-helper.ts","./core/components/ui/form/input/same-value-helper.ts","./core/components/ui/form/input-autocomplete/input-autocomplete.ts","./core/components/ui/form/radio/radio.ts","./core/components/ui/form/select/select.ts","./core/components/ui/form/switch/switch.ts","./core/components/ui/form/textarea/textarea.ts","./core/components/ui/group/group.ts","./core/components/ui/icon/icon.stories.ts","./core/components/ui/icon/icon.ts","./core/components/ui/icon/icons.ts","./core/components/ui/image/image.ts","./core/components/ui/link/link.ts","./core/components/ui/loader/loader.stories.ts","./core/components/ui/loader/loader.ts","./core/components/ui/loader/styles/fixed.ts","./core/components/ui/loader/styles/inline.ts","./core/components/ui/menu/menu-item.ts","./core/components/ui/menu/menu.ts","./core/components/ui/modal/modal-actions.ts","./core/components/ui/modal/modal-close.ts","./core/components/ui/modal/modal-content.ts","./core/components/ui/modal/modal-subtitle.ts","./core/components/ui/modal/modal-title.ts","./core/components/ui/modal/modal.stories.ts","./core/components/ui/modal/modal.ts","./core/components/ui/pop/pop.ts","./core/components/ui/progress/progress.ts","./core/components/ui/table/table-caption.ts","./core/components/ui/table/table-tbody.ts","./core/components/ui/table/table-td.ts","./core/components/ui/table/table-tfoot.ts","./core/components/ui/table/table-th.ts","./core/components/ui/table/table-thead.ts","./core/components/ui/table/table-tr.ts","./core/components/ui/table/table.ts","./core/components/ui/theme/theme.ts","./core/components/ui/theme/theme-collection/core-variables.ts","./core/components/ui/theme/theme-collection/dark.ts","./core/components/ui/theme/theme-collection/light.ts","./core/components/ui/toast/message-subscriber.ts","./core/components/ui/toast/toast-item.ts","./core/components/ui/toast/toast.ts","./core/components/ui/toast/types.ts","./core/components/ui/tooltip/tooltip.ts","./core/decorators/Subscriber.ts","./core/decorators/subscriber/ancestorAttribute.ts","./core/decorators/subscriber/autoFill.ts","./core/decorators/subscriber/autoSubscribe.ts","./core/decorators/subscriber/bind.ts","./core/decorators/subscriber/common.ts","./core/decorators/subscriber/onAssign.ts","./core/directives/DataProvider.ts","./core/directives/Wording.ts","./core/mixins/Fetcher.ts","./core/mixins/FormCheckable.ts","./core/mixins/FormElement.ts","./core/mixins/FormInput.ts","./core/mixins/Subscriber.ts","./core/mixins/TemplatesContainer.ts","./core/mixins/mixins.ts","./core/utils/Arrays.ts","./core/utils/DataBindObserver.ts","./core/utils/Electron.ts","./core/utils/Format.ts","./core/utils/HTML.ts","./core/utils/LocationHandler.ts","./core/utils/Objects.ts","./core/utils/PublisherProxy.ts","./core/utils/Utils.ts","./core/utils/aesCrypto.ts","./core/utils/api.ts","./core/utils/route.spec.ts","./core/utils/route.ts","./core/utils/url-pattern.ts","./test-utils/TestUtils.ts"],"version":"5.9.2"}
package/src/utils.ts CHANGED
@@ -14,9 +14,8 @@ import * as myLocationHandler from "@supersoniks/concorde/core/utils/LocationHan
14
14
  export const LocationHandler = myLocationHandler.default;
15
15
  import * as myObjects from "@supersoniks/concorde/core/utils/Objects";
16
16
  export const Objects = myObjects.default;
17
- import * as myPublisherProxy from "@supersoniks/concorde/core/utils/PublisherProxy";
18
- export const PublisherProxy = myPublisherProxy.default;
19
- export const PublisherManager = myPublisherProxy.PublisherManager;
17
+ export * from "@supersoniks/concorde/core/utils/PublisherProxy";
18
+ import { PublisherManager } from "@supersoniks/concorde/core/utils/PublisherProxy";
20
19
  import * as myApi from "@supersoniks/concorde/core/utils/api";
21
20
  export const api = myApi.default;
22
21
  import * as myURLPattern from "@supersoniks/concorde/core/utils/url-pattern";
@@ -34,7 +33,6 @@ window["concorde-utils"] = {
34
33
  HTML: HTML,
35
34
  LocationHandler: LocationHandler,
36
35
  Objects: Objects,
37
- PublisherProxy: PublisherProxy,
38
36
  PublisherManager: PublisherManager,
39
37
  api: api,
40
38
  URLPattern: URLPattern,
@@ -1,176 +0,0 @@
1
- # Comparaison des versions MCP Concorde
2
-
3
- ## 🐍 Version Python vs 🟢 Version Node.js
4
-
5
- J'ai créé deux versions du serveur MCP Concorde pour vous donner le choix selon vos préférences et votre environnement.
6
-
7
- ## 📊 Comparaison technique
8
-
9
- | Critère | Python | Node.js |
10
- |---------|--------|---------|
11
- | **Temps de démarrage** | ~2-3 secondes | ~1-2 secondes |
12
- | **Mémoire utilisée** | ~50-100 MB | ~30-50 MB |
13
- | **Temps de réponse** | <100ms | <50ms |
14
- | **Taille des dépendances** | ~25 MB | ~15 MB |
15
- | **Compatibilité** | Universelle | Écosystème JS/TS |
16
- | **Maintenance** | Plus lourde | Plus légère |
17
-
18
- ## 🎯 Recommandations d'usage
19
-
20
- ### Choisir la version Python si :
21
- - ✅ Vous préférez Python
22
- - ✅ Vous avez déjà Python installé
23
- - ✅ Vous travaillez dans un environnement Python
24
- - ✅ Vous voulez la compatibilité maximale
25
-
26
- ### Choisir la version Node.js si :
27
- - ✅ Vous travaillez avec JavaScript/TypeScript
28
- - ✅ Vous voulez de meilleures performances
29
- - ✅ Vous préférez l'écosystème Node.js
30
- - ✅ Vous voulez une intégration plus native avec Concorde
31
-
32
- ## 🚀 Installation
33
-
34
- ### Version Python
35
- ```bash
36
- # Installation automatique
37
- ./install-mcp.sh
38
-
39
- # Ou manuelle
40
- pip install mcp
41
- python3 concorde-mcp-server.py
42
- ```
43
-
44
- ### Version Node.js
45
- ```bash
46
- # Installation automatique
47
- ./install-mcp-nodejs.sh
48
-
49
- # Ou manuelle
50
- npm install
51
- node concorde-mcp-server.js
52
- ```
53
-
54
- ## ⚙️ Configuration Cursor
55
-
56
- ### Version Python
57
- ```json
58
- {
59
- "mcpServers": {
60
- "concorde": {
61
- "command": "python3",
62
- "args": ["/usr2/sites/concorde/concorde-mcp-server.py"],
63
- "env": {
64
- "PYTHONPATH": "/usr2/sites/concorde"
65
- }
66
- }
67
- }
68
- }
69
- ```
70
-
71
- ### Version Node.js
72
- ```json
73
- {
74
- "mcpServers": {
75
- "concorde": {
76
- "command": "node",
77
- "args": ["/usr2/sites/concorde/concorde-mcp-server.js"],
78
- "env": {
79
- "NODE_PATH": "/usr2/sites/concorde"
80
- }
81
- }
82
- }
83
- }
84
- ```
85
-
86
- ## 🧪 Test des versions
87
-
88
- ### Version Python
89
- ```bash
90
- python3 test-mcp.py
91
- ```
92
-
93
- ### Version Node.js
94
- ```bash
95
- npm test
96
- # ou
97
- node test-mcp.js
98
- ```
99
-
100
- ## 📁 Fichiers créés
101
-
102
- ### Version Python
103
- - `concorde-mcp-server.py` - Serveur principal
104
- - `test-mcp.py` - Script de test
105
- - `install-mcp.sh` - Script d'installation
106
- - `cursor-mcp-config.json` - Configuration Cursor
107
- - `README-MCP.md` - Documentation
108
-
109
- ### Version Node.js
110
- - `concorde-mcp-server.js` - Serveur principal
111
- - `test-mcp.js` - Script de test
112
- - `package-mcp.json` - Configuration npm
113
- - `install-mcp-nodejs.sh` - Script d'installation
114
- - `cursor-mcp-config-nodejs.json` - Configuration Cursor
115
- - `README-MCP-NODEJS.md` - Documentation
116
-
117
- ## 🔧 Fonctionnalités identiques
118
-
119
- Les deux versions offrent exactement les mêmes fonctionnalités :
120
-
121
- ### Outils MCP
122
- - `search_component` - Recherche de composants
123
- - `get_component_info` - Informations détaillées
124
- - `generate_component_code` - Génération de code
125
- - `get_form_example` - Exemples de formulaires
126
- - `get_theme_info` - Informations sur les thèmes
127
- - `get_icons_list` - Liste des icônes
128
-
129
- ### Ressources
130
- - Documentation complète des composants
131
- - Exemples d'utilisation
132
- - Concepts de base (architecture, data binding)
133
- - Exemples pratiques
134
-
135
- ## 🎨 Exemples d'utilisation
136
-
137
- Les deux versions génèrent le même code :
138
-
139
- ```html
140
- <!-- Bouton avec icône -->
141
- <sonic-button type="primary" size="lg">
142
- <sonic-icon library="core" name="check" slot="prefix"></sonic-icon>
143
- Valider
144
- </sonic-button>
145
-
146
- <!-- Formulaire complet -->
147
- <div formDataProvider="userForm">
148
- <sonic-fieldset label="Informations">
149
- <sonic-form-layout>
150
- <sonic-input name="email" type="email" label="Email" required></sonic-input>
151
- <sonic-input name="password" type="password" label="Mot de passe" required></sonic-input>
152
- </sonic-form-layout>
153
- </sonic-fieldset>
154
- <sonic-form-actions>
155
- <sonic-button type="primary">Connexion</sonic-button>
156
- </sonic-form-actions>
157
- </div>
158
- ```
159
-
160
- ## 🔄 Migration entre versions
161
-
162
- Si vous voulez changer de version :
163
-
164
- 1. **Arrêter Cursor**
165
- 2. **Modifier la configuration** dans settings.json
166
- 3. **Redémarrer Cursor**
167
- 4. **Tester** avec les commandes de test
168
-
169
- ## 🏆 Conclusion
170
-
171
- Les deux versions sont parfaitement fonctionnelles et offrent les mêmes capacités. Le choix dépend principalement de vos préférences :
172
-
173
- - **Python** : Plus universel, plus lourd
174
- - **Node.js** : Plus rapide, plus léger, mieux intégré
175
-
176
- Les deux versions permettent à l'IA de Cursor d'avoir un accès complet et intelligent à toute la documentation et au code du framework Concorde ! 🎉