spaday-regular-table 0.0.0__tar.gz → 0.2.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.
- spaday_regular_table-0.2.0/.gitignore +157 -0
- {spaday_regular_table-0.0.0 → spaday_regular_table-0.2.0}/LICENSE +1 -1
- spaday_regular_table-0.2.0/PKG-INFO +111 -0
- spaday_regular_table-0.2.0/README.md +67 -0
- spaday_regular_table-0.2.0/js/.oxfmtrc.json +5 -0
- spaday_regular_table-0.2.0/js/.oxlintrc.json +11 -0
- spaday_regular_table-0.2.0/js/build.mjs +48 -0
- spaday_regular_table-0.2.0/js/package.json +56 -0
- spaday_regular_table-0.2.0/js/playwright.config.js +38 -0
- spaday_regular_table-0.2.0/js/pnpm-lock.yaml +2863 -0
- spaday_regular_table-0.2.0/js/pnpm-workspace.yaml +2 -0
- spaday_regular_table-0.2.0/js/src/css/index.css +0 -0
- spaday_regular_table-0.2.0/js/src/html/index.html +13 -0
- spaday_regular_table-0.2.0/js/src/ts/css.d.ts +4 -0
- spaday_regular_table-0.2.0/js/src/ts/index.ts +449 -0
- spaday_regular_table-0.2.0/js/tests/index.spec.js +171 -0
- spaday_regular_table-0.2.0/js/tools/bundle.mjs +59 -0
- spaday_regular_table-0.2.0/js/tools/css.mjs +55 -0
- spaday_regular_table-0.2.0/js/tools/externals.mjs +18 -0
- spaday_regular_table-0.2.0/js/tools/getarg.mjs +23 -0
- spaday_regular_table-0.2.0/js/tools/html.mjs +0 -0
- spaday_regular_table-0.2.0/js/tsconfig.json +24 -0
- spaday_regular_table-0.2.0/pyproject.toml +190 -0
- spaday_regular_table-0.2.0/spaday_regular_table/__init__.py +50 -0
- spaday_regular_table-0.2.0/spaday_regular_table/components.cem.json +39 -0
- spaday_regular_table-0.2.0/spaday_regular_table/components.py +67 -0
- spaday_regular_table-0.2.0/spaday_regular_table/example.py +267 -0
- spaday_regular_table-0.2.0/spaday_regular_table/extension/cdn/index.js +1202 -0
- spaday_regular_table-0.2.0/spaday_regular_table/extension/cdn/index.js.map +7 -0
- spaday_regular_table-0.2.0/spaday_regular_table/extension/css/material.css +1 -0
- spaday_regular_table-0.2.0/spaday_regular_table/extension/index.html +13 -0
- spaday_regular_table-0.2.0/spaday_regular_table/tests/test_all.py +67 -0
- spaday_regular_table-0.2.0/spaday_regular_table/tests/test_example.py +34 -0
- spaday_regular_table-0.0.0/PKG-INFO +0 -225
- spaday_regular_table-0.0.0/README.md +0 -1
- spaday_regular_table-0.0.0/pyproject.toml +0 -29
- spaday_regular_table-0.0.0/setup.cfg +0 -4
- spaday_regular_table-0.0.0/setup.py +0 -1
- spaday_regular_table-0.0.0/spaday_regular_table.egg-info/PKG-INFO +0 -225
- spaday_regular_table-0.0.0/spaday_regular_table.egg-info/SOURCES.txt +0 -8
- spaday_regular_table-0.0.0/spaday_regular_table.egg-info/dependency_links.txt +0 -1
- spaday_regular_table-0.0.0/spaday_regular_table.egg-info/top_level.txt +0 -1
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Byte-compiled / optimized / DLL files
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*$py.class
|
|
5
|
+
|
|
6
|
+
# C extensions
|
|
7
|
+
*.a
|
|
8
|
+
*.o
|
|
9
|
+
*.dSYM
|
|
10
|
+
*.so
|
|
11
|
+
*.obj
|
|
12
|
+
*.dll
|
|
13
|
+
*.exp
|
|
14
|
+
*.lib
|
|
15
|
+
|
|
16
|
+
# Rust
|
|
17
|
+
target
|
|
18
|
+
target-capi
|
|
19
|
+
|
|
20
|
+
# Distribution / packaging
|
|
21
|
+
.Python
|
|
22
|
+
build/
|
|
23
|
+
develop-eggs/
|
|
24
|
+
dist/
|
|
25
|
+
downloads/
|
|
26
|
+
eggs/
|
|
27
|
+
.eggs/
|
|
28
|
+
lib/
|
|
29
|
+
lib64/
|
|
30
|
+
parts/
|
|
31
|
+
sdist/
|
|
32
|
+
var/
|
|
33
|
+
wheels/
|
|
34
|
+
pip-wheel-metadata/
|
|
35
|
+
share/python-wheels/
|
|
36
|
+
*.egg-info/
|
|
37
|
+
.installed.cfg
|
|
38
|
+
*.egg
|
|
39
|
+
MANIFEST
|
|
40
|
+
|
|
41
|
+
# PyInstaller
|
|
42
|
+
*.manifest
|
|
43
|
+
*.spec
|
|
44
|
+
|
|
45
|
+
# Installer logs
|
|
46
|
+
pip-log.txt
|
|
47
|
+
pip-delete-this-directory.txt
|
|
48
|
+
|
|
49
|
+
# Unit test / coverage reports
|
|
50
|
+
htmlcov/
|
|
51
|
+
.tox/
|
|
52
|
+
.nox/
|
|
53
|
+
.coverage
|
|
54
|
+
.coverage.*
|
|
55
|
+
.cache
|
|
56
|
+
nosetests.xml
|
|
57
|
+
coverage.xml
|
|
58
|
+
junit.xml
|
|
59
|
+
*.cover
|
|
60
|
+
*.py,cover
|
|
61
|
+
.hypothesis/
|
|
62
|
+
.pytest_cache/
|
|
63
|
+
|
|
64
|
+
# Django
|
|
65
|
+
*.log
|
|
66
|
+
local_settings.py
|
|
67
|
+
db.sqlite3
|
|
68
|
+
db.sqlite3-journal
|
|
69
|
+
|
|
70
|
+
# IPython
|
|
71
|
+
profile_default/
|
|
72
|
+
ipython_config.py
|
|
73
|
+
|
|
74
|
+
# pyenv
|
|
75
|
+
.python-version
|
|
76
|
+
|
|
77
|
+
# pipenv
|
|
78
|
+
Pipfile.lock
|
|
79
|
+
|
|
80
|
+
# Celery
|
|
81
|
+
celerybeat-schedule
|
|
82
|
+
celerybeat.pid
|
|
83
|
+
|
|
84
|
+
# Airspeed Velocity
|
|
85
|
+
.asv
|
|
86
|
+
|
|
87
|
+
# Environments
|
|
88
|
+
.env
|
|
89
|
+
.venv
|
|
90
|
+
env/
|
|
91
|
+
venv/
|
|
92
|
+
ENV/
|
|
93
|
+
env.bak/
|
|
94
|
+
venv.bak/
|
|
95
|
+
|
|
96
|
+
# Spyder project settings
|
|
97
|
+
.spyderproject
|
|
98
|
+
.spyproject
|
|
99
|
+
|
|
100
|
+
# Rope project settings
|
|
101
|
+
.ropeproject
|
|
102
|
+
|
|
103
|
+
# mkdocs documentation
|
|
104
|
+
/site
|
|
105
|
+
|
|
106
|
+
# mypy
|
|
107
|
+
.mypy_cache/
|
|
108
|
+
.dmypy.json
|
|
109
|
+
dmypy.json
|
|
110
|
+
|
|
111
|
+
# Pyre type checker
|
|
112
|
+
.pyre/
|
|
113
|
+
|
|
114
|
+
# Documentation
|
|
115
|
+
/site
|
|
116
|
+
index.md
|
|
117
|
+
docs/_build/
|
|
118
|
+
docs/api
|
|
119
|
+
docs/html
|
|
120
|
+
docs/index.md
|
|
121
|
+
docs/jupyter_execute
|
|
122
|
+
docs/src/_build/
|
|
123
|
+
docs/superpowers
|
|
124
|
+
index.md
|
|
125
|
+
|
|
126
|
+
# JS
|
|
127
|
+
js/coverage
|
|
128
|
+
js/dist
|
|
129
|
+
js/lib
|
|
130
|
+
js/node_modules
|
|
131
|
+
js/test-results
|
|
132
|
+
js/playwright-report
|
|
133
|
+
js/*.tgz
|
|
134
|
+
|
|
135
|
+
# Jupyter
|
|
136
|
+
.ipynb_checkpoints
|
|
137
|
+
.autoversion
|
|
138
|
+
Untitled*.ipynb
|
|
139
|
+
spaday_regular_table/extension
|
|
140
|
+
spaday_regular_table/nbextension
|
|
141
|
+
spaday_regular_table/labextension
|
|
142
|
+
|
|
143
|
+
# Emscripten SDK (locally installed)
|
|
144
|
+
emsdk
|
|
145
|
+
|
|
146
|
+
# Mac
|
|
147
|
+
.DS_Store
|
|
148
|
+
|
|
149
|
+
# Hydra
|
|
150
|
+
/outputs/
|
|
151
|
+
/multirun/
|
|
152
|
+
|
|
153
|
+
# AI
|
|
154
|
+
ROADMAP.md
|
|
155
|
+
AGENTS.md
|
|
156
|
+
.github/hooks/sdlc.json
|
|
157
|
+
.superpowers
|
|
@@ -186,7 +186,7 @@
|
|
|
186
186
|
same "printed page" as the copyright notice for easier
|
|
187
187
|
identification within third-party archives.
|
|
188
188
|
|
|
189
|
-
Copyright 2025
|
|
189
|
+
Copyright 2025 1kbgz
|
|
190
190
|
|
|
191
191
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
192
192
|
you may not use this file except in compliance with the License.
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: spaday-regular-table
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: regular-table for spaday
|
|
5
|
+
Project-URL: Repository, https://github.com/1kbgz/spaday-regular-table
|
|
6
|
+
Project-URL: Homepage, https://github.com/1kbgz/spaday-regular-table
|
|
7
|
+
Author-email: 1kbgz <dev@1kbgz.com>
|
|
8
|
+
License: Apache-2.0
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Classifier: Development Status :: 3 - Alpha
|
|
11
|
+
Classifier: Programming Language :: Python
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
17
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
18
|
+
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
|
19
|
+
Requires-Python: >=3.11
|
|
20
|
+
Requires-Dist: spaday>=0.6.0
|
|
21
|
+
Provides-Extra: develop
|
|
22
|
+
Requires-Dist: build; extra == 'develop'
|
|
23
|
+
Requires-Dist: bump-my-version; extra == 'develop'
|
|
24
|
+
Requires-Dist: check-dist; extra == 'develop'
|
|
25
|
+
Requires-Dist: codespell; extra == 'develop'
|
|
26
|
+
Requires-Dist: hatch-js; extra == 'develop'
|
|
27
|
+
Requires-Dist: hatchling; extra == 'develop'
|
|
28
|
+
Requires-Dist: httpx; extra == 'develop'
|
|
29
|
+
Requires-Dist: mdformat; extra == 'develop'
|
|
30
|
+
Requires-Dist: mdformat-tables>=1; extra == 'develop'
|
|
31
|
+
Requires-Dist: pytest; extra == 'develop'
|
|
32
|
+
Requires-Dist: pytest-cov; extra == 'develop'
|
|
33
|
+
Requires-Dist: ruff; extra == 'develop'
|
|
34
|
+
Requires-Dist: starlette; extra == 'develop'
|
|
35
|
+
Requires-Dist: twine; extra == 'develop'
|
|
36
|
+
Requires-Dist: ty; extra == 'develop'
|
|
37
|
+
Requires-Dist: uv; extra == 'develop'
|
|
38
|
+
Requires-Dist: uvicorn; extra == 'develop'
|
|
39
|
+
Requires-Dist: wheel; extra == 'develop'
|
|
40
|
+
Provides-Extra: examples
|
|
41
|
+
Requires-Dist: starlette; extra == 'examples'
|
|
42
|
+
Requires-Dist: uvicorn; extra == 'examples'
|
|
43
|
+
Description-Content-Type: text/markdown
|
|
44
|
+
|
|
45
|
+
# spaday-regular-table
|
|
46
|
+
|
|
47
|
+
Viewport-virtualized data tables for spaday, powered by `regular-table`.
|
|
48
|
+
|
|
49
|
+
[](https://github.com/1kbgz/spaday-regular-table/actions/workflows/build.yaml)
|
|
50
|
+
[](https://codecov.io/gh/1kbgz/spaday-regular-table)
|
|
51
|
+
[](https://github.com/1kbgz/spaday-regular-table)
|
|
52
|
+
[](https://pypi.python.org/pypi/spaday-regular-table)
|
|
53
|
+
|
|
54
|
+
## Documentation
|
|
55
|
+
|
|
56
|
+
- [Build a 100,000-row table](docs/src/tutorial.md) — guided virtual-table example.
|
|
57
|
+
- [Add rich action cells and hot row updates](docs/src/how-to.md) — task-focused Python configuration.
|
|
58
|
+
- [API reference](docs/src/reference.md) — props, events, methods, and metadata.
|
|
59
|
+
- [Why viewport virtualization matters](docs/src/explanation.md) — performance model and tradeoffs.
|
|
60
|
+
|
|
61
|
+
## Quick example
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from spaday import CallEndpoint, event_value, serve
|
|
65
|
+
from spaday_regular_table import RegularTable
|
|
66
|
+
|
|
67
|
+
rows = [{"id": i, "symbol": f"SYM{i}", "price": i / 10} for i in range(100_000)]
|
|
68
|
+
|
|
69
|
+
table = RegularTable(
|
|
70
|
+
columns=[
|
|
71
|
+
"id",
|
|
72
|
+
{
|
|
73
|
+
"key": "symbol",
|
|
74
|
+
"label": "Symbol",
|
|
75
|
+
"cell": {"tag": "button", "class": "symbol-button", "event": "symbol-click"},
|
|
76
|
+
},
|
|
77
|
+
{"key": "price", "label": "Last price", "cell": {"format": "number", "digits": 2}},
|
|
78
|
+
],
|
|
79
|
+
rows=rows,
|
|
80
|
+
row_header="id",
|
|
81
|
+
style="height: 32rem",
|
|
82
|
+
).on("symbol-click", CallEndpoint("POST", "/api/click", event_value()))
|
|
83
|
+
|
|
84
|
+
serve(table, packages=["regular-table"])
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Only cells requested for the current viewport are copied into `regular-table` and rendered. `rows`
|
|
88
|
+
remains a browser-side record array. `columns` accepts keys or `{key, label, cell}` objects and is
|
|
89
|
+
inferred from the first row when omitted. A `cell` descriptor can wrap the displayed value in an HTML
|
|
90
|
+
or custom-element tag, apply classes and attributes, or format numeric values. The wrapper performs
|
|
91
|
+
that work only for visible cells.
|
|
92
|
+
|
|
93
|
+
For hot server pushes, set `stream_url` to an SSE endpoint whose messages are row patches. You can also
|
|
94
|
+
bind `rowPatch` to `CallEndpoint(result=...)` state for request/response updates. Each patch contains
|
|
95
|
+
revisioned `update`, `insert`, and `remove` operations, so a 100,000-row list is not recopied. The
|
|
96
|
+
browser methods remain available to integration authors, but applications need no JavaScript callback.
|
|
97
|
+
|
|
98
|
+
`cell-click` exposes `event.detail` with `type`, virtual `x`/`y`, `column`, `value`, and the source `row`, so normal spaday actions can handle interactions. `virtual_mode` supports upstream `both`, `horizontal`, `vertical`, and `none`; keep `both` for large datasets.
|
|
99
|
+
|
|
100
|
+
## Run the local example
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
python -m pip install -e ".[examples]"
|
|
104
|
+
python -m spaday_regular_table.example
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Open `http://127.0.0.1:8014` to inspect the [complete market-blotter example](spaday_regular_table/example.py): 100,000
|
|
108
|
+
virtualized rows, a server row stream, full-width sizing, rich cells, and server-authoritative update,
|
|
109
|
+
insert, remove, and click operations. All interaction is authored in Python; there is no companion
|
|
110
|
+
`example.js`. It passes the local package descriptor directly, so it does not install or resolve the
|
|
111
|
+
integration from GitHub.
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
# spaday-regular-table
|
|
2
|
+
|
|
3
|
+
Viewport-virtualized data tables for spaday, powered by `regular-table`.
|
|
4
|
+
|
|
5
|
+
[](https://github.com/1kbgz/spaday-regular-table/actions/workflows/build.yaml)
|
|
6
|
+
[](https://codecov.io/gh/1kbgz/spaday-regular-table)
|
|
7
|
+
[](https://github.com/1kbgz/spaday-regular-table)
|
|
8
|
+
[](https://pypi.python.org/pypi/spaday-regular-table)
|
|
9
|
+
|
|
10
|
+
## Documentation
|
|
11
|
+
|
|
12
|
+
- [Build a 100,000-row table](docs/src/tutorial.md) — guided virtual-table example.
|
|
13
|
+
- [Add rich action cells and hot row updates](docs/src/how-to.md) — task-focused Python configuration.
|
|
14
|
+
- [API reference](docs/src/reference.md) — props, events, methods, and metadata.
|
|
15
|
+
- [Why viewport virtualization matters](docs/src/explanation.md) — performance model and tradeoffs.
|
|
16
|
+
|
|
17
|
+
## Quick example
|
|
18
|
+
|
|
19
|
+
```python
|
|
20
|
+
from spaday import CallEndpoint, event_value, serve
|
|
21
|
+
from spaday_regular_table import RegularTable
|
|
22
|
+
|
|
23
|
+
rows = [{"id": i, "symbol": f"SYM{i}", "price": i / 10} for i in range(100_000)]
|
|
24
|
+
|
|
25
|
+
table = RegularTable(
|
|
26
|
+
columns=[
|
|
27
|
+
"id",
|
|
28
|
+
{
|
|
29
|
+
"key": "symbol",
|
|
30
|
+
"label": "Symbol",
|
|
31
|
+
"cell": {"tag": "button", "class": "symbol-button", "event": "symbol-click"},
|
|
32
|
+
},
|
|
33
|
+
{"key": "price", "label": "Last price", "cell": {"format": "number", "digits": 2}},
|
|
34
|
+
],
|
|
35
|
+
rows=rows,
|
|
36
|
+
row_header="id",
|
|
37
|
+
style="height: 32rem",
|
|
38
|
+
).on("symbol-click", CallEndpoint("POST", "/api/click", event_value()))
|
|
39
|
+
|
|
40
|
+
serve(table, packages=["regular-table"])
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Only cells requested for the current viewport are copied into `regular-table` and rendered. `rows`
|
|
44
|
+
remains a browser-side record array. `columns` accepts keys or `{key, label, cell}` objects and is
|
|
45
|
+
inferred from the first row when omitted. A `cell` descriptor can wrap the displayed value in an HTML
|
|
46
|
+
or custom-element tag, apply classes and attributes, or format numeric values. The wrapper performs
|
|
47
|
+
that work only for visible cells.
|
|
48
|
+
|
|
49
|
+
For hot server pushes, set `stream_url` to an SSE endpoint whose messages are row patches. You can also
|
|
50
|
+
bind `rowPatch` to `CallEndpoint(result=...)` state for request/response updates. Each patch contains
|
|
51
|
+
revisioned `update`, `insert`, and `remove` operations, so a 100,000-row list is not recopied. The
|
|
52
|
+
browser methods remain available to integration authors, but applications need no JavaScript callback.
|
|
53
|
+
|
|
54
|
+
`cell-click` exposes `event.detail` with `type`, virtual `x`/`y`, `column`, `value`, and the source `row`, so normal spaday actions can handle interactions. `virtual_mode` supports upstream `both`, `horizontal`, `vertical`, and `none`; keep `both` for large datasets.
|
|
55
|
+
|
|
56
|
+
## Run the local example
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
python -m pip install -e ".[examples]"
|
|
60
|
+
python -m spaday_regular_table.example
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Open `http://127.0.0.1:8014` to inspect the [complete market-blotter example](spaday_regular_table/example.py): 100,000
|
|
64
|
+
virtualized rows, a server row stream, full-width sizing, rich cells, and server-authoritative update,
|
|
65
|
+
insert, remove, and click operations. All interaction is authored in Python; there is no companion
|
|
66
|
+
`example.js`. It passes the local package descriptor directly, so it does not install or resolve the
|
|
67
|
+
integration from GitHub.
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { bundle } from "./tools/bundle.mjs";
|
|
2
|
+
import { node_modules_external } from "./tools/externals.mjs";
|
|
3
|
+
|
|
4
|
+
import fs from "fs";
|
|
5
|
+
import cpy from "cpy";
|
|
6
|
+
|
|
7
|
+
const BUNDLES = [
|
|
8
|
+
{
|
|
9
|
+
entryPoints: ["src/ts/index.ts"],
|
|
10
|
+
plugins: [node_modules_external()],
|
|
11
|
+
outfile: "dist/esm/index.js",
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
entryPoints: ["src/ts/index.ts"],
|
|
15
|
+
outfile: "dist/cdn/index.js",
|
|
16
|
+
},
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
async function build() {
|
|
20
|
+
fs.rmSync("dist", { recursive: true, force: true });
|
|
21
|
+
fs.rmSync("../spaday_regular_table/extension", {
|
|
22
|
+
recursive: true,
|
|
23
|
+
force: true,
|
|
24
|
+
});
|
|
25
|
+
|
|
26
|
+
// Copy HTML
|
|
27
|
+
await cpy("src/html/*", "dist/");
|
|
28
|
+
|
|
29
|
+
// Copy images
|
|
30
|
+
fs.mkdirSync("dist/img", { recursive: true });
|
|
31
|
+
await cpy("src/img/*", "dist/img");
|
|
32
|
+
|
|
33
|
+
await cpy("node_modules/regular-table/dist/css/material.css", "dist/css", {
|
|
34
|
+
flat: true,
|
|
35
|
+
});
|
|
36
|
+
|
|
37
|
+
await Promise.all(BUNDLES.map(bundle)).catch(() => process.exit(1));
|
|
38
|
+
|
|
39
|
+
// Copy servable assets to python extension (exclude esm/)
|
|
40
|
+
fs.mkdirSync("../spaday_regular_table/extension", { recursive: true });
|
|
41
|
+
await cpy("dist/**/*", "../spaday_regular_table/extension", {
|
|
42
|
+
filter: (file) =>
|
|
43
|
+
!file.relativePath.startsWith("esm/") &&
|
|
44
|
+
!file.relativePath.startsWith("dist/esm/"),
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
build();
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "spaday-regular-table",
|
|
3
|
+
"version": "0.2.0",
|
|
4
|
+
"description": "regular-table for spaday",
|
|
5
|
+
"repository": "git@github.com:1kbgz/spaday-regular-table.git",
|
|
6
|
+
"author": "1kbgz <dev@1kbgz.com>",
|
|
7
|
+
"license": "Apache-2.0",
|
|
8
|
+
"private": true,
|
|
9
|
+
"type": "module",
|
|
10
|
+
"unpkg": "dist/cdn/index.js",
|
|
11
|
+
"jsdelivr": "dist/cdn/index.js",
|
|
12
|
+
"exports": {
|
|
13
|
+
".": {
|
|
14
|
+
"types": "./dist/esm/index.d.ts",
|
|
15
|
+
"default": "./dist/esm/index.js"
|
|
16
|
+
},
|
|
17
|
+
"./dist/*": "./dist/*",
|
|
18
|
+
"./package.json": "./package.json"
|
|
19
|
+
},
|
|
20
|
+
"files": [
|
|
21
|
+
"dist/**/*",
|
|
22
|
+
"index.d.ts"
|
|
23
|
+
],
|
|
24
|
+
"types": "./dist/esm/index.d.ts",
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"scripts": {
|
|
29
|
+
"build:debug": "node build.mjs --debug",
|
|
30
|
+
"build": "node build.mjs",
|
|
31
|
+
"clean": "rm -rf dist playwright-report ../spaday_regular_table/extension",
|
|
32
|
+
"dev": "npm-run-all -p start watch",
|
|
33
|
+
"lint": "oxlint . && oxfmt --check \"src/**/*.{js,ts,jsx,tsx,css}\" \"tests/**/*.{js,ts,jsx,tsx}\" \"*.mjs\" \"*.json\"",
|
|
34
|
+
"fix": "oxlint --fix . && oxfmt --write \"src/**/*.{js,ts,jsx,tsx,css}\" \"tests/**/*.{js,ts,jsx,tsx}\" \"*.mjs\" \"*.json\"",
|
|
35
|
+
"preinstall": "npx only-allow pnpm",
|
|
36
|
+
"prepack": "npm run build",
|
|
37
|
+
"start": "http-server -p 3000 -o examples/",
|
|
38
|
+
"start:tests": "http-server -p 3000 ",
|
|
39
|
+
"test": "TZ=UTC playwright test",
|
|
40
|
+
"watch": "nodemon --watch src -e ts,css,html --exec \"pnpm build:debug\""
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"regular-table": "^0.9.0"
|
|
44
|
+
},
|
|
45
|
+
"devDependencies": {
|
|
46
|
+
"@playwright/test": "^1.62.0",
|
|
47
|
+
"cpy": "^13.2.2",
|
|
48
|
+
"esbuild": "^0.28.1",
|
|
49
|
+
"http-server": "^14.1.1",
|
|
50
|
+
"nodemon": "^3.1.10",
|
|
51
|
+
"npm-run-all": "^4.1.5",
|
|
52
|
+
"oxfmt": "^0.63.0",
|
|
53
|
+
"oxlint": "^1.78.0",
|
|
54
|
+
"typescript": "^7.0.2"
|
|
55
|
+
}
|
|
56
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { defineConfig, devices } from "@playwright/test";
|
|
2
|
+
|
|
3
|
+
export default defineConfig({
|
|
4
|
+
testDir: "tests",
|
|
5
|
+
fullyParallel: true,
|
|
6
|
+
forbidOnly: !!process.env.CI,
|
|
7
|
+
retries: process.env.CI ? 2 : 0,
|
|
8
|
+
workers: process.env.CI ? 1 : undefined,
|
|
9
|
+
reporter: [
|
|
10
|
+
["line"],
|
|
11
|
+
["html", { outputFile: "playwright-report/index.html", open: "never" }],
|
|
12
|
+
["junit", { outputFile: "junit.xml" }],
|
|
13
|
+
],
|
|
14
|
+
use: {
|
|
15
|
+
baseURL: "http://127.0.0.1:3000",
|
|
16
|
+
trace: "on-first-retry",
|
|
17
|
+
},
|
|
18
|
+
projects: [
|
|
19
|
+
{
|
|
20
|
+
name: "chromium",
|
|
21
|
+
use: { ...devices["Desktop Chrome"] },
|
|
22
|
+
},
|
|
23
|
+
],
|
|
24
|
+
webServer: [
|
|
25
|
+
{
|
|
26
|
+
command: "pnpm run start:tests",
|
|
27
|
+
url: "http://127.0.0.1:3000",
|
|
28
|
+
reuseExistingServer: !process.env.CI,
|
|
29
|
+
timeout: 120 * 1000,
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
command: "python -m spaday_regular_table.example",
|
|
33
|
+
url: "http://127.0.0.1:8014",
|
|
34
|
+
reuseExistingServer: !process.env.CI,
|
|
35
|
+
timeout: 120 * 1000,
|
|
36
|
+
},
|
|
37
|
+
],
|
|
38
|
+
});
|