@objectsws/s-portal 0.1.0 → 0.1.1
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/MANUAL_TEST.md +1 -1
- package/README.md +12 -12
- package/dist/index.js +2 -2
- package/dist/scaffold.js +1 -1
- package/dist/utils.js +1 -1
- package/package.json +1 -1
- package/templates/portal.README.md +1 -1
package/MANUAL_TEST.md
CHANGED
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# `@
|
|
1
|
+
# `@objectsws/s-portal`
|
|
2
2
|
|
|
3
3
|
CLI that scaffolds Apps Portal sync into a Shopify Remix app and registers your **Remote Base URL** with the portal sync engine.
|
|
4
4
|
|
|
@@ -13,15 +13,15 @@ CLI that scaffolds Apps Portal sync into a Shopify Remix app and registers your
|
|
|
13
13
|
From your Shopify Remix app root:
|
|
14
14
|
|
|
15
15
|
```bash
|
|
16
|
-
npx @
|
|
16
|
+
npx @objectsws/s-portal
|
|
17
17
|
# same as:
|
|
18
|
-
npx @
|
|
18
|
+
npx @objectsws/s-portal connect
|
|
19
19
|
```
|
|
20
20
|
|
|
21
21
|
Non-interactive:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx @
|
|
24
|
+
npx @objectsws/s-portal connect \
|
|
25
25
|
--portal-url https://your-portal.example.com \
|
|
26
26
|
--client-id portal-my-app \
|
|
27
27
|
--client-secret '…' \
|
|
@@ -32,7 +32,7 @@ npx @objects/s-portal connect \
|
|
|
32
32
|
Scaffold only (no portal API calls):
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
npx @
|
|
35
|
+
npx @objectsws/s-portal connect --scaffold-only
|
|
36
36
|
```
|
|
37
37
|
|
|
38
38
|
### Discard (tear down)
|
|
@@ -40,17 +40,17 @@ npx @objects/s-portal connect --scaffold-only
|
|
|
40
40
|
Removes CLI-scaffolded files, strips `PORTAL_*` / `HEARTBEAT_INTERVAL_MS` from `.env`, unpatches the heartbeat markers in `entry.server`, and **soft-disconnects** on the portal (clears Remote Base URL + disables sync/active check; **keeps** Client Id/Secret).
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
npx @
|
|
43
|
+
npx @objectsws/s-portal discard
|
|
44
44
|
```
|
|
45
45
|
|
|
46
46
|
Non-interactive:
|
|
47
47
|
|
|
48
48
|
```bash
|
|
49
|
-
npx @
|
|
49
|
+
npx @objectsws/s-portal discard --yes
|
|
50
50
|
# or skip portal API:
|
|
51
|
-
npx @
|
|
51
|
+
npx @objectsws/s-portal discard --yes --local-only
|
|
52
52
|
# delete scaffold files even if you edited them:
|
|
53
|
-
npx @
|
|
53
|
+
npx @objectsws/s-portal discard --yes --force
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
Credentials for disconnect are resolved from flags → `.env` → prompts. If missing, local cleanup still runs and portal disconnect is skipped with a warning.
|
|
@@ -78,7 +78,7 @@ Publish from this package directory (not the monorepo root).
|
|
|
78
78
|
|
|
79
79
|
### One-time setup
|
|
80
80
|
|
|
81
|
-
1. Create or join the npm org **`objects`** (package name is `@
|
|
81
|
+
1. Create or join the npm org **`objects`** (package name is `@objectsws/s-portal`).
|
|
82
82
|
2. `npm login` with an account that can publish under `@objects`.
|
|
83
83
|
3. Confirm: `npm access list packages @objects` (or npm Dashboard → Orgs).
|
|
84
84
|
|
|
@@ -99,8 +99,8 @@ Scoped packages need `--access public` for free public installs.
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
cd /path/to/other-shopify-app
|
|
102
|
-
npx @
|
|
103
|
-
npx @
|
|
102
|
+
npx @objectsws/s-portal@latest
|
|
103
|
+
npx @objectsws/s-portal discard --yes
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
Until published, run the built binary directly:
|
package/dist/index.js
CHANGED
|
@@ -50,7 +50,7 @@ program
|
|
|
50
50
|
}
|
|
51
51
|
});
|
|
52
52
|
async function runConnect(opts) {
|
|
53
|
-
console.log("\n@
|
|
53
|
+
console.log("\n@objectsws/s-portal — Apps Portal connect\n");
|
|
54
54
|
const detected = detectShopifyApp(process.cwd());
|
|
55
55
|
console.log(`Detected app root: ${detected.root}`);
|
|
56
56
|
if (detected.packageName)
|
|
@@ -135,7 +135,7 @@ Next steps:
|
|
|
135
135
|
`);
|
|
136
136
|
}
|
|
137
137
|
async function runDiscard(opts) {
|
|
138
|
-
console.log("\n@
|
|
138
|
+
console.log("\n@objectsws/s-portal — Apps Portal discard\n");
|
|
139
139
|
const detected = detectShopifyApp(process.cwd());
|
|
140
140
|
console.log(`Detected app root: ${detected.root}`);
|
|
141
141
|
if (detected.packageName)
|
package/dist/scaffold.js
CHANGED
|
@@ -47,7 +47,7 @@ export async function scaffoldPortalFiles(appRoot, opts = {}) {
|
|
|
47
47
|
break;
|
|
48
48
|
}
|
|
49
49
|
const importLine = `import { startHeartbeatLoop } from "../portal/heartbeat.server";\n`;
|
|
50
|
-
const callLine = `\n// Apps Portal heartbeat (scaffolded by @
|
|
50
|
+
const callLine = `\n// Apps Portal heartbeat (scaffolded by @objectsws/s-portal)\nstartHeartbeatLoop();\n`;
|
|
51
51
|
if (!src.includes("portal/heartbeat.server")) {
|
|
52
52
|
src = importLine + src;
|
|
53
53
|
}
|
package/dist/utils.js
CHANGED
|
@@ -13,7 +13,7 @@ export function templatesDir() {
|
|
|
13
13
|
if (fs.existsSync(dir))
|
|
14
14
|
return dir;
|
|
15
15
|
}
|
|
16
|
-
throw new Error("Could not find @
|
|
16
|
+
throw new Error("Could not find @objectsws/s-portal templates directory.");
|
|
17
17
|
}
|
|
18
18
|
export function readTemplate(name) {
|
|
19
19
|
return fs.readFileSync(path.join(templatesDir(), name), "utf8");
|
package/package.json
CHANGED