@curless/shopify-storefront 0.2.2 → 0.2.3
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/__tests__/privacy-page.test.js +15 -0
- package/dist/__tests__/privacy-page.test.js.map +1 -1
- package/dist/config.d.ts +8 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/legal.d.ts +11 -8
- package/dist/legal.d.ts.map +1 -1
- package/dist/legal.js +9 -4
- package/dist/legal.js.map +1 -1
- package/package.json +1 -1
|
@@ -68,6 +68,21 @@ describe('privacy page', () => {
|
|
|
68
68
|
expect(adapterOrderFields()).not.toContain('email');
|
|
69
69
|
expect(privacyPage(CTX)).toContain('never returned');
|
|
70
70
|
});
|
|
71
|
+
// elspet had no legal.merchantContact, so both legal pages rendered
|
|
72
|
+
// `<a href="mailto:"></a>` — an empty link, in the sentence telling a shopper
|
|
73
|
+
// how to exercise their rights, on the page a directory reviewer opens. The
|
|
74
|
+
// config comment claimed the value was filled from the shop's contactEmail;
|
|
75
|
+
// the code said `?? ''`.
|
|
76
|
+
test('never emits a mailto with nothing after it', () => {
|
|
77
|
+
const noContact = privacyPage({ ...CTX, merchantContact: '' });
|
|
78
|
+
expect(noContact).not.toContain('mailto:"');
|
|
79
|
+
expect(noContact).not.toContain('mailto:<');
|
|
80
|
+
// It still tells them where to go — the shop itself.
|
|
81
|
+
expect(noContact).toContain('https://moodylenses.com');
|
|
82
|
+
});
|
|
83
|
+
test('uses the address when there is one', () => {
|
|
84
|
+
expect(privacyPage(CTX)).toContain('mailto:support@moodylenses.com');
|
|
85
|
+
});
|
|
71
86
|
test('defers to the merchant rather than replacing their policy', () => {
|
|
72
87
|
const page = privacyPage(CTX);
|
|
73
88
|
expect(page).toContain("This is not Moody Lenses's privacy policy");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy-page.test.js","sourceRoot":"","sources":["../../src/__tests__/privacy-page.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"privacy-page.test.js","sourceRoot":"","sources":["../../src/__tests__/privacy-page.test.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts
CHANGED
|
@@ -98,7 +98,14 @@ export type StorefrontConfig = {
|
|
|
98
98
|
legal: {
|
|
99
99
|
operator?: string;
|
|
100
100
|
operatorContact?: string;
|
|
101
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* The address the merchant publishes in their OWN privacy policy.
|
|
103
|
+
*
|
|
104
|
+
* This used to claim it was filled from the shop's `contactEmail`. It never
|
|
105
|
+
* was — the code reads `?? ''` — and the promise is why nobody noticed the
|
|
106
|
+
* legal pages rendering an empty mailto. Left unset, the pages point at the
|
|
107
|
+
* storefront instead; set it and a shopper gets a real address.
|
|
108
|
+
*/
|
|
102
109
|
merchantContact?: string;
|
|
103
110
|
region?: string;
|
|
104
111
|
updated?: string;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,mFAAmF;AACnF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B;;;OAGG;IACH,EAAE,EAAE,MAAM,CAAC;IAEX,6DAA6D;IAC7D,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,KAAK,EAAE,MAAM,CAAC;QACd;;;;WAIG;QACH,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB;;;;;;;;;;WAUG;QACH,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE;QACP,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;IAEF,OAAO,EAAE;QACP;;;;;WAKG;QACH,IAAI,EAAE,KAAK,GAAG,eAAe,CAAC;QAC9B,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF,8GAA8G;IAC9G,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IAEF;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE;QACN,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,4EAA4E;QAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IAEF,KAAK,EAAE;QACL,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,eAAe,CAAC,EAAE,MAAM,CAAC;QACzB
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/legal.d.ts
CHANGED
|
@@ -12,7 +12,17 @@ export type LegalContext = {
|
|
|
12
12
|
shopDomain: string;
|
|
13
13
|
/** Where it runs, for a reviewer with data-residency rules. */
|
|
14
14
|
region: string;
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* The merchant's own support address, as published in their OWN policies —
|
|
17
|
+
* not the contact page, which on a fresh Shopify theme is still
|
|
18
|
+
* info@yourstore.com.
|
|
19
|
+
*
|
|
20
|
+
* May be empty. It was empty for elspet, and the page rendered
|
|
21
|
+
* `<a href="mailto:"></a>` — an empty link, in the "how to exercise your
|
|
22
|
+
* rights" sentence, on the page a directory reviewer reads. Every use goes
|
|
23
|
+
* through `reachAt()` now, which falls back to the storefront rather than
|
|
24
|
+
* emitting a link to nowhere.
|
|
25
|
+
*/
|
|
16
26
|
merchantContact: string;
|
|
17
27
|
/** The two rate limits, quoted from the code rather than from memory. */
|
|
18
28
|
rateGeneral: number;
|
|
@@ -49,13 +59,6 @@ export type LegalContext = {
|
|
|
49
59
|
* install, and the egress list is every outbound host the service can reach.
|
|
50
60
|
*/
|
|
51
61
|
export declare const docsPage: (c: LegalContext) => string;
|
|
52
|
-
/**
|
|
53
|
-
* The fields an order lookup can return, as they are named in the response.
|
|
54
|
-
*
|
|
55
|
-
* Exported so the test can assert the page names every one of them: the reason
|
|
56
|
-
* Curless was rejected was a policy that did not enumerate what came back, and
|
|
57
|
-
* a list kept by hand drifts the moment the adapter grows a field.
|
|
58
|
-
*/
|
|
59
62
|
export declare const ORDER_FIELDS: ReadonlyArray<[field: string, meaning: string]>;
|
|
60
63
|
/**
|
|
61
64
|
* The privacy page. Scoped deliberately: it covers this connector, not the shop.
|
package/dist/legal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legal.d.ts","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AA2CA,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB;6DACyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf
|
|
1
|
+
{"version":3,"file":"legal.d.ts","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AA2CA,4EAA4E;AAC5E,MAAM,MAAM,YAAY,GAAG;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB,wDAAwD;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB;6DACyD;IACzD,UAAU,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,MAAM,EAAE,MAAM,CAAC;IACf;;;;;;;;;;OAUG;IACH,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;OAOG;IACH,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,QAAQ,GAAI,GAAG,YAAY,KAAG,MAkGxC,CAAC;AAkBJ,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAexE,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,GAAI,GAAG,YAAY,KAAG,MA4D3C,CAAC"}
|
package/dist/legal.js
CHANGED
|
@@ -139,8 +139,7 @@ export const docsPage = (c) => PAGE(`Documentation — ${c.merchantName} shoppin
|
|
|
139
139
|
|
|
140
140
|
<h2>Contact</h2>
|
|
141
141
|
<p>Anything a shopper would ask — an order, a payment, a return —
|
|
142
|
-
is ${c.merchantName}'s: <a href="
|
|
143
|
-
or <a href="${c.storefront}">${c.storefront}</a>.</p>
|
|
142
|
+
is ${c.merchantName}'s: ${reachAt(c)}, or <a href="${c.storefront}">${c.storefront}</a>.</p>
|
|
144
143
|
<p>An administrator reviewing this server, or reporting a fault in it, reaches the
|
|
145
144
|
operator at <a href="mailto:${c.operatorContact}">${c.operatorContact}</a> — kept here
|
|
146
145
|
because the point of this page is to say who runs the thing you are being asked to
|
|
@@ -155,6 +154,13 @@ export const docsPage = (c) => PAGE(`Documentation — ${c.merchantName} shoppin
|
|
|
155
154
|
* Curless was rejected was a policy that did not enumerate what came back, and
|
|
156
155
|
* a list kept by hand drifts the moment the adapter grows a field.
|
|
157
156
|
*/
|
|
157
|
+
/**
|
|
158
|
+
* How to reach the merchant, as HTML. The address when there is one, the shop
|
|
159
|
+
* itself when there is not — never `mailto:` with nothing after it.
|
|
160
|
+
*/
|
|
161
|
+
const reachAt = (c) => c.merchantContact
|
|
162
|
+
? `<a href="mailto:${c.merchantContact}">${c.merchantContact}</a>`
|
|
163
|
+
: `<a href="${c.storefront}">${c.storefront}</a>`;
|
|
158
164
|
export const ORDER_FIELDS = [
|
|
159
165
|
['name', 'the order number as the merchant writes it, e.g. #1052'],
|
|
160
166
|
['createdAt', 'when the order was placed'],
|
|
@@ -224,8 +230,7 @@ export const privacyPage = (c) => PAGE(`Privacy — ${c.merchantName} shopping a
|
|
|
224
230
|
|
|
225
231
|
<h2>Your rights</h2>
|
|
226
232
|
<p>Exercise them with ${c.merchantName} — they hold the order, and this connector holds no
|
|
227
|
-
shopper record to correct or delete:
|
|
228
|
-
<a href="mailto:${c.merchantContact}">${c.merchantContact}</a>.</p>
|
|
233
|
+
shopper record to correct or delete: ${reachAt(c)}.</p>
|
|
229
234
|
<p>About the connector itself, ${c.operator} is reachable at
|
|
230
235
|
<a href="mailto:${c.operatorContact}">${c.operatorContact}</a>.</p>
|
|
231
236
|
|
package/dist/legal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,gFAAgF;AAChF,qBAAqB;AACrB,EAAE;AACF,iFAAiF;AACjF,+EAA+E;AAC/E,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,6EAA6E;AAC7E,2DAA2D;AAC3D,EAAE;AACF,2EAA2E;AAC3E,gFAAgF;AAChF,gEAAgE;AAChE,EAAE;AACF,iFAAiF;AACjF,6EAA6E;AAC7E,8EAA8E;AAC9E,kCAAkC;AAElC,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,IAAY,EAAU,EAAE,CACnD;;YAEU,KAAK;;;;;;;;;;;;;;;KAeZ,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"legal.js","sourceRoot":"","sources":["../src/legal.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@curless/shopify-storefront",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "One Shopify storefront MCP connector, driven by a config file. Identity, tool names, vocabulary and shop wiring come from a StorefrontConfig, so a second merchant is a JSON file rather than a fork of 3,400 lines.",
|
|
6
6
|
"keywords": [
|