wexample-wex-addon-dev-javascript 8.3.4__tar.gz → 8.5.0__tar.gz

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 (53) hide show
  1. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/PKG-INFO +8 -9
  2. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/README.md +5 -6
  3. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/pyproject.toml +3 -3
  4. wexample_wex_addon_dev_javascript-8.5.0/src/wexample_wex_addon_dev_javascript/file/javascript_package_lock_json_file.py +32 -0
  5. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/file/node_package_json_file.py +5 -0
  6. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/workdir/javascript_workdir.py +9 -0
  7. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/__init__.py +0 -0
  8. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/__pycache__/__init__.py +0 -0
  9. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/common/__init__.py +0 -0
  10. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/common/npm_registry_gateway.py +0 -0
  11. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/config_value/__init__.py +0 -0
  12. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/config_value/javascript_package_readme_config_value.py +0 -0
  13. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/const/__init__.py +0 -0
  14. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/const/registry.py +0 -0
  15. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/const/tags.py +0 -0
  16. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/file/__init__.py +0 -0
  17. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/file/javascript_package_json_file.py +0 -0
  18. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/file/javascript_tsconfig_json_file.py +0 -0
  19. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/formatter/__init__.py +0 -0
  20. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/formatter/javascript_code_formatter.py +0 -0
  21. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/javascript_addon_manager.py +0 -0
  22. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/py.typed +0 -0
  23. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/resources/.wex.yml +0 -0
  24. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/resources/design_rules/javascript_code.md +0 -0
  25. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/resources/package_publish.yml +0 -0
  26. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/resources/writing_rules/javascript_code.md +0 -0
  27. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/__init__.py +0 -0
  28. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/__init__.py +0 -0
  29. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/commands/__init__.py +0 -0
  30. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/commands/service/__init__.py +0 -0
  31. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/commands/service/install_local.py +0 -0
  32. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/commands/service/refresh_lock.py +0 -0
  33. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/docker/.wex.yml +0 -0
  34. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/docker/docker-compose.yml +0 -0
  35. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/node/service.yml +0 -0
  36. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/__init__.py +0 -0
  37. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/ai/__init__.py +0 -0
  38. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/ai/agents/__init__.py +0 -0
  39. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/ai/agents/main/__init__.py +0 -0
  40. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/ai/agents/main/about-service.md +0 -0
  41. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/ai/agents/main/agent.yml +0 -0
  42. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/app_service.py +0 -0
  43. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/commands/__init__.py +0 -0
  44. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/commands/service/__init__.py +0 -0
  45. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/commands/service/install.py +0 -0
  46. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/commands/service/ready.py +0 -0
  47. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/docker/.wex.yml +0 -0
  48. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/docker/docker-compose.yml +0 -0
  49. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/services/vite/service.yml +0 -0
  50. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/workdir/__init__.py +0 -0
  51. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/workdir/javascript_package_workdir.py +0 -0
  52. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/src/wexample_wex_addon_dev_javascript/workdir/javascript_packages_suite_workdir.py +0 -0
  53. {wexample_wex_addon_dev_javascript-8.3.4 → wexample_wex_addon_dev_javascript-8.5.0}/tests/.gitkeep +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wexample-wex-addon-dev-javascript
3
- Version: 8.3.4
3
+ Version: 8.5.0
4
4
  Summary: Extends wex with JavaScript support: enforces JS/TS project layout and symlinks local npm packages into node_modules
5
5
  Author-Email: weeger <contact@wexample.com>
6
6
  License: MIT
@@ -13,8 +13,8 @@ Requires-Dist: attrs>=23.1.0
13
13
  Requires-Dist: cattrs>=23.1.0
14
14
  Requires-Dist: wexample-api>=6.8.0
15
15
  Requires-Dist: wexample-filestate-javascript>=6.6.0
16
- Requires-Dist: wexample-wex-addon-ai>=18.3.0
17
- Requires-Dist: wexample-wex-addon-app>=33.3.0
16
+ Requires-Dist: wexample-wex-addon-ai>=19.0.0
17
+ Requires-Dist: wexample-wex-addon-app>=34.0.0
18
18
  Provides-Extra: dev
19
19
  Requires-Dist: pytest; extra == "dev"
20
20
  Requires-Dist: pytest-cov; extra == "dev"
@@ -22,7 +22,7 @@ Description-Content-Type: text/markdown
22
22
 
23
23
  # wex_addon_dev_javascript
24
24
 
25
- Version: 8.3.4
25
+ Version: 8.5.0
26
26
 
27
27
  `wex-addon-dev-javascript` extends wex for JavaScript and TypeScript developers: it enforces a standard project layout — requiring `package.json`, `tsconfig.json`, `.npmrc`, `src/`, `tests/`, and the corresponding `.gitignore` rules — and in local environments symlinks locally-developed npm packages directly into a running container's `node_modules/` so monorepo packages resolve without a registry publish cycle. It also contributes a `node` service and a `vite` service, each backed by Docker Compose, where the vite service patches `allowedHosts` in `vite.config.ts` for reverse-proxy use and the node service handles lockfile refresh, annotated-tag release, and registry polling for npm package suites managed through wex.
28
28
 
@@ -243,16 +243,14 @@ This package is part of the Wexample Suite — a collection of high-quality, mod
243
243
 
244
244
  The suite includes packages for configuration management, file handling, prompts, and more. Each package can be used independently or as part of the integrated suite.
245
245
 
246
- Visit the [Wexample Suite documentation](https://docs.wexample.com) for the complete package ecosystem.
247
-
248
246
  ## Dependencies
249
247
 
250
248
  - attrs: >=23.1.0
251
249
  - cattrs: >=23.1.0
252
250
  - wexample-api: >=6.8.0
253
251
  - wexample-filestate-javascript: >=6.6.0
254
- - wexample-wex-addon-ai: >=18.3.0
255
- - wexample-wex-addon-app: >=33.3.0
252
+ - wexample-wex-addon-ai: >=19.0.0
253
+ - wexample-wex-addon-app: >=34.0.0
256
254
 
257
255
  ## Versioning & Compatibility Policy
258
256
 
@@ -278,6 +276,8 @@ This packages suite embodies this spirit. Trusted by professionals and enthusias
278
276
 
279
277
  Wexample cultivates a culture of mastery. Each package, each contribution carries the mark of a community that values precision, ethics, and innovation — a community proud to shape the future of digital craftsmanship.
280
278
 
279
+ Built and maintained by [Romain Weeger](https://weeger.io).
280
+
281
281
  ## Known Limitations & Roadmap
282
282
 
283
283
  Current limitations and planned features are tracked in the GitHub issues.
@@ -297,7 +297,6 @@ See the [project roadmap](https://github.com/wexample/python-wex_addon_dev_javas
297
297
  ## Useful Links
298
298
 
299
299
  - **Homepage**: https://github.com/wexample/python-wex-addon-dev-javascript
300
- - **Documentation**: [docs.wexample.com](https://docs.wexample.com)
301
300
  - **Issue Tracker**: https://github.com/wexample/python-wex-addon-dev-javascript/issues
302
301
  - **Discussions**: https://github.com/wexample/python-wex-addon-dev-javascript/discussions
303
302
  - **PyPI**: [pypi.org/project/wexample-wex-addon-dev-javascript](https://pypi.org/project/wexample-wex-addon-dev-javascript/)
@@ -1,6 +1,6 @@
1
1
  # wex_addon_dev_javascript
2
2
 
3
- Version: 8.3.4
3
+ Version: 8.5.0
4
4
 
5
5
  `wex-addon-dev-javascript` extends wex for JavaScript and TypeScript developers: it enforces a standard project layout — requiring `package.json`, `tsconfig.json`, `.npmrc`, `src/`, `tests/`, and the corresponding `.gitignore` rules — and in local environments symlinks locally-developed npm packages directly into a running container's `node_modules/` so monorepo packages resolve without a registry publish cycle. It also contributes a `node` service and a `vite` service, each backed by Docker Compose, where the vite service patches `allowedHosts` in `vite.config.ts` for reverse-proxy use and the node service handles lockfile refresh, annotated-tag release, and registry polling for npm package suites managed through wex.
6
6
 
@@ -221,16 +221,14 @@ This package is part of the Wexample Suite — a collection of high-quality, mod
221
221
 
222
222
  The suite includes packages for configuration management, file handling, prompts, and more. Each package can be used independently or as part of the integrated suite.
223
223
 
224
- Visit the [Wexample Suite documentation](https://docs.wexample.com) for the complete package ecosystem.
225
-
226
224
  ## Dependencies
227
225
 
228
226
  - attrs: >=23.1.0
229
227
  - cattrs: >=23.1.0
230
228
  - wexample-api: >=6.8.0
231
229
  - wexample-filestate-javascript: >=6.6.0
232
- - wexample-wex-addon-ai: >=18.3.0
233
- - wexample-wex-addon-app: >=33.3.0
230
+ - wexample-wex-addon-ai: >=19.0.0
231
+ - wexample-wex-addon-app: >=34.0.0
234
232
 
235
233
  ## Versioning & Compatibility Policy
236
234
 
@@ -256,6 +254,8 @@ This packages suite embodies this spirit. Trusted by professionals and enthusias
256
254
 
257
255
  Wexample cultivates a culture of mastery. Each package, each contribution carries the mark of a community that values precision, ethics, and innovation — a community proud to shape the future of digital craftsmanship.
258
256
 
257
+ Built and maintained by [Romain Weeger](https://weeger.io).
258
+
259
259
  ## Known Limitations & Roadmap
260
260
 
261
261
  Current limitations and planned features are tracked in the GitHub issues.
@@ -275,7 +275,6 @@ See the [project roadmap](https://github.com/wexample/python-wex_addon_dev_javas
275
275
  ## Useful Links
276
276
 
277
277
  - **Homepage**: https://github.com/wexample/python-wex-addon-dev-javascript
278
- - **Documentation**: [docs.wexample.com](https://docs.wexample.com)
279
278
  - **Issue Tracker**: https://github.com/wexample/python-wex-addon-dev-javascript/issues
280
279
  - **Discussions**: https://github.com/wexample/python-wex-addon-dev-javascript/discussions
281
280
  - **PyPI**: [pypi.org/project/wexample-wex-addon-dev-javascript](https://pypi.org/project/wexample-wex-addon-dev-javascript/)
@@ -6,7 +6,7 @@ build-backend = "pdm.backend"
6
6
 
7
7
  [project]
8
8
  name = "wexample-wex-addon-dev-javascript"
9
- version = "8.3.4"
9
+ version = "8.5.0"
10
10
  description = "Extends wex with JavaScript support: enforces JS/TS project layout and symlinks local npm packages into node_modules"
11
11
  authors = [
12
12
  { name = "weeger", email = "contact@wexample.com" },
@@ -22,8 +22,8 @@ dependencies = [
22
22
  "cattrs>=23.1.0",
23
23
  "wexample-api>=6.8.0",
24
24
  "wexample-filestate-javascript>=6.6.0",
25
- "wexample-wex-addon-ai>=18.3.0",
26
- "wexample-wex-addon-app>=33.3.0",
25
+ "wexample-wex-addon-ai>=19.0.0",
26
+ "wexample-wex-addon-app>=34.0.0",
27
27
  ]
28
28
 
29
29
  [project.readme]
@@ -0,0 +1,32 @@
1
+ from __future__ import annotations
2
+
3
+ from wexample_filestate.item.file.json_file import JsonFile
4
+ from wexample_helpers.decorator.base_class import base_class
5
+
6
+
7
+ @base_class
8
+ class JavascriptPackageLockJsonFile(JsonFile):
9
+ """A published javascript package's package-lock.json.
10
+
11
+ npm records the package's own version in its lock, twice. The bump writes
12
+ it into package.json alone, so the lock kept the previous one, and the next
13
+ `npm install` — a test run, a lock refresh — wrote it back: a change in the
14
+ working tree, which made every package of the suite look modified again and
15
+ be published once more at the next run. Written here, from the same source
16
+ and at the same time as package.json's.
17
+ """
18
+
19
+ def dumps(self, content: dict | None = None) -> str:
20
+ content = content or self.read_parsed()
21
+
22
+ version = self.get_parent_item().get_setup_version()
23
+ if "version" in content:
24
+ content["version"] = version
25
+ root = (content.get("packages") or {}).get("")
26
+ if isinstance(root, dict) and "version" in root:
27
+ root["version"] = version
28
+
29
+ # With the newline npm ends the file with: without it, the next install
30
+ # would change the file back, and the loop this class closes reopens.
31
+ dumped = super().dumps(content)
32
+ return dumped if dumped.endswith("\n") else dumped + "\n"
@@ -73,3 +73,8 @@ class NodePackageJsonFile(AppDependenciesConfigFileMixin, JsonFile):
73
73
  deps = config.search(path="dependencies").to_dict_or_none() or {}
74
74
  peer = config.search(path="peerDependencies").to_dict_or_none() or {}
75
75
  return {**deps, **peer}
76
+
77
+ def get_dev_dependencies_versions(self) -> dict[str, str]:
78
+ return (
79
+ self.read_config().search(path="devDependencies").to_dict_or_none() or {}
80
+ )
@@ -83,6 +83,9 @@ class JavascriptWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
83
83
  from wexample_wex_addon_dev_javascript.file.javascript_package_json_file import (
84
84
  JavascriptPackageJsonFile,
85
85
  )
86
+ from wexample_wex_addon_dev_javascript.file.javascript_package_lock_json_file import (
87
+ JavascriptPackageLockJsonFile,
88
+ )
86
89
  from wexample_wex_addon_dev_javascript.file.javascript_tsconfig_json_file import (
87
90
  JavascriptTsconfigJsonFile,
88
91
  )
@@ -118,6 +121,12 @@ class JavascriptWorkdir(WithAiWorkdirMixin, CodeBaseWorkdir):
118
121
  "type": DiskItemType.FILE,
119
122
  "should_exist": True,
120
123
  },
124
+ # Not required: a package installed by yarn or pnpm has none.
125
+ {
126
+ "class": JavascriptPackageLockJsonFile,
127
+ "name": "package-lock.json",
128
+ "type": DiskItemType.FILE,
129
+ },
121
130
  {
122
131
  "class": JavascriptTsconfigJsonFile,
123
132
  "name": "tsconfig.json",