@specific.dev/cli 0.1.103 → 0.1.105
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.
- package/dist/admin/404/index.html +1 -1
- package/dist/admin/404.html +1 -1
- package/dist/admin/__next.!KGRlZmF1bHQp.__PAGE__.txt +1 -1
- package/dist/admin/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/__next._full.txt +1 -1
- package/dist/admin/__next._head.txt +1 -1
- package/dist/admin/__next._index.txt +1 -1
- package/dist/admin/__next._tree.txt +1 -1
- package/dist/admin/_not-found/__next._full.txt +1 -1
- package/dist/admin/_not-found/__next._head.txt +1 -1
- package/dist/admin/_not-found/__next._index.txt +1 -1
- package/dist/admin/_not-found/__next._not-found.__PAGE__.txt +1 -1
- package/dist/admin/_not-found/__next._not-found.txt +1 -1
- package/dist/admin/_not-found/__next._tree.txt +1 -1
- package/dist/admin/_not-found/index.html +1 -1
- package/dist/admin/_not-found/index.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.__PAGE__.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.databases.txt +1 -1
- package/dist/admin/databases/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/databases/__next._full.txt +1 -1
- package/dist/admin/databases/__next._head.txt +1 -1
- package/dist/admin/databases/__next._index.txt +1 -1
- package/dist/admin/databases/__next._tree.txt +1 -1
- package/dist/admin/databases/index.html +1 -1
- package/dist/admin/databases/index.txt +1 -1
- package/dist/admin/fullscreen/__next._full.txt +1 -1
- package/dist/admin/fullscreen/__next._head.txt +1 -1
- package/dist/admin/fullscreen/__next._index.txt +1 -1
- package/dist/admin/fullscreen/__next._tree.txt +1 -1
- package/dist/admin/fullscreen/__next.fullscreen.__PAGE__.txt +1 -1
- package/dist/admin/fullscreen/__next.fullscreen.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._full.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._head.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._index.txt +1 -1
- package/dist/admin/fullscreen/databases/__next._tree.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.databases.__PAGE__.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.databases.txt +1 -1
- package/dist/admin/fullscreen/databases/__next.fullscreen.txt +1 -1
- package/dist/admin/fullscreen/databases/index.html +1 -1
- package/dist/admin/fullscreen/databases/index.txt +1 -1
- package/dist/admin/fullscreen/index.html +1 -1
- package/dist/admin/fullscreen/index.txt +1 -1
- package/dist/admin/index.html +1 -1
- package/dist/admin/index.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.__PAGE__.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.mail.txt +1 -1
- package/dist/admin/mail/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/mail/__next._full.txt +1 -1
- package/dist/admin/mail/__next._head.txt +1 -1
- package/dist/admin/mail/__next._index.txt +1 -1
- package/dist/admin/mail/__next._tree.txt +1 -1
- package/dist/admin/mail/index.html +1 -1
- package/dist/admin/mail/index.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.__PAGE__.txt +1 -1
- package/dist/admin/workflows/__next.!KGRlZmF1bHQp.workflows.txt +1 -1
- package/dist/admin/workflows/__next._full.txt +1 -1
- package/dist/admin/workflows/__next._head.txt +1 -1
- package/dist/admin/workflows/__next._index.txt +1 -1
- package/dist/admin/workflows/__next._tree.txt +1 -1
- package/dist/admin/workflows/index.html +1 -1
- package/dist/admin/workflows/index.txt +1 -1
- package/dist/cli.js +3 -3
- package/dist/docs/sync.md +38 -0
- package/package.json +1 -1
- /package/dist/admin/_next/static/{rh21O0TR1IaWnJRmFmEQ2 → DM3asEJQq_O7ltL-zYqgE}/_buildManifest.js +0 -0
- /package/dist/admin/_next/static/{rh21O0TR1IaWnJRmFmEQ2 → DM3asEJQq_O7ltL-zYqgE}/_clientMiddlewareManifest.json +0 -0
- /package/dist/admin/_next/static/{rh21O0TR1IaWnJRmFmEQ2 → DM3asEJQq_O7ltL-zYqgE}/_ssgManifest.js +0 -0
package/dist/cli.js
CHANGED
|
@@ -373039,7 +373039,7 @@ function trackEvent(event, properties) {
|
|
|
373039
373039
|
event,
|
|
373040
373040
|
properties: {
|
|
373041
373041
|
...properties,
|
|
373042
|
-
cli_version: "0.1.
|
|
373042
|
+
cli_version: "0.1.105",
|
|
373043
373043
|
platform: process.platform,
|
|
373044
373044
|
node_version: process.version,
|
|
373045
373045
|
project_id: getProjectId()
|
|
@@ -376718,7 +376718,7 @@ function compareVersions(a, b) {
|
|
|
376718
376718
|
return 0;
|
|
376719
376719
|
}
|
|
376720
376720
|
async function checkForUpdate() {
|
|
376721
|
-
const currentVersion = "0.1.
|
|
376721
|
+
const currentVersion = "0.1.105";
|
|
376722
376722
|
const response = await fetch(`${BINARIES_BASE_URL}/latest?t=${Date.now()}`);
|
|
376723
376723
|
if (!response.ok) {
|
|
376724
376724
|
throw new Error(`Failed to check for updates: HTTP ${response.status}`);
|
|
@@ -376986,7 +376986,7 @@ async function projectListCommand() {
|
|
|
376986
376986
|
var program = new Command();
|
|
376987
376987
|
var env = "production";
|
|
376988
376988
|
var envLabel = env !== "production" ? `[${env.toUpperCase()}] ` : "";
|
|
376989
|
-
program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.
|
|
376989
|
+
program.name("specific").description(`${envLabel}Infrastructure-as-code for coding agents`).version("0.1.105").enablePositionalOptions();
|
|
376990
376990
|
program.command("init").description("Initialize project for use with a coding agent").option("--agent <name...>", "Agents to configure (cursor, claude, codex, other)").addHelpText("after", `
|
|
376991
376991
|
Examples:
|
|
376992
376992
|
$ specific init
|
package/dist/docs/sync.md
CHANGED
|
@@ -46,6 +46,44 @@ For implementation details, see the Electric documentation:
|
|
|
46
46
|
- Authentication and proxying: https://electric-sql.com/docs/guides/auth
|
|
47
47
|
- Shapes and client usage: https://electric-sql.com/docs/guides/shapes
|
|
48
48
|
- Handling writes: https://electric-sql.com/docs/guides/writes
|
|
49
|
+
- Troubleshooting: https://electric-sql.com/docs/guides/troubleshooting
|
|
50
|
+
|
|
51
|
+
## Proxy configuration
|
|
52
|
+
|
|
53
|
+
When proxying Electric requests from your backend, you must handle headers and query parameters correctly. Getting these wrong causes silent failures — browsers block responses or serve stale cached data without clear error messages.
|
|
54
|
+
|
|
55
|
+
### Expose Electric response headers
|
|
56
|
+
|
|
57
|
+
Electric returns custom `electric-*` headers that the client SDK needs to follow the shape log. Browsers block JavaScript from reading non-standard response headers unless they are listed in `Access-Control-Expose-Headers`. Make sure your proxy does not strip any `electric-*` headers from the response, and expose them all:
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
Access-Control-Expose-Headers: electric-handle, electric-offset, electric-schema, electric-cursor, electric-up-to-date, electric-chunk-last-offset
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Strip upstream headers
|
|
64
|
+
|
|
65
|
+
Electric's response includes its own CORS and caching headers. If your proxy copies these through and your CORS middleware also adds its own, the browser receives duplicate `Access-Control-Allow-Origin` values and rejects the response. Before setting your own headers, strip these from Electric's response:
|
|
66
|
+
|
|
67
|
+
- `Access-Control-Allow-Origin` and other `Access-Control-*` headers
|
|
68
|
+
- `Content-Encoding` and `Content-Length` (fetch decompresses the body but doesn't update these headers, which breaks browser decoding)
|
|
69
|
+
- `Cache-Control` (see below)
|
|
70
|
+
|
|
71
|
+
### Override caching
|
|
72
|
+
|
|
73
|
+
Electric returns `Cache-Control` with `max-age` and `stale-age` for request collapsing at CDN level. During development, this can cause browsers to serve stale cached responses — for example, responses cached before CORS headers were configured correctly will keep failing even after the proxy is fixed. Override with `Cache-Control: no-store` on your proxy response to prevent this.
|
|
74
|
+
|
|
75
|
+
### Control query parameters
|
|
76
|
+
|
|
77
|
+
Set these server-side — never pass them through from the client:
|
|
78
|
+
|
|
79
|
+
- `table` — letting clients specify the table allows access to any table
|
|
80
|
+
- `where` — this is your authorization filter
|
|
81
|
+
- `columns` — clients could request sensitive columns
|
|
82
|
+
- `secret` — never expose the API secret to clients
|
|
83
|
+
|
|
84
|
+
Only forward Electric protocol parameters from the client:
|
|
85
|
+
|
|
86
|
+
- `offset`, `handle`, `live`, `live_sse`, `cursor`, `expired_handle`, `replica`, `log`
|
|
49
87
|
|
|
50
88
|
## Using the Electric TypeScript SDK
|
|
51
89
|
|
package/package.json
CHANGED
/package/dist/admin/_next/static/{rh21O0TR1IaWnJRmFmEQ2 → DM3asEJQq_O7ltL-zYqgE}/_buildManifest.js
RENAMED
|
File without changes
|
|
File without changes
|
/package/dist/admin/_next/static/{rh21O0TR1IaWnJRmFmEQ2 → DM3asEJQq_O7ltL-zYqgE}/_ssgManifest.js
RENAMED
|
File without changes
|