@tollwyn/baukasten 3.0.2 → 3.0.4
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/product.d.ts +2 -2
- package/dist/server/legal/de.js +0 -1
- package/dist/server/legal/en.js +0 -1
- package/dist/server/legal/fleet.d.ts +5 -1
- package/dist/server/legal/fleet.js +6 -10
- package/dist/server/terms.d.ts +2 -2
- package/dist/server/terms.js +2 -2
- package/dist/shopify/legal/de.js +3 -3
- package/dist/shopify/legal/en.js +3 -3
- package/dist/shopify/legal/shopify.d.ts +0 -6
- package/dist/shopify/legal/shopify.js +0 -7
- package/package.json +1 -1
package/dist/product.d.ts
CHANGED
|
@@ -128,8 +128,8 @@ export interface Product<E extends ProductEnv = ProductEnv> {
|
|
|
128
128
|
};
|
|
129
129
|
};
|
|
130
130
|
/**
|
|
131
|
-
* The day the product's part of its
|
|
132
|
-
*
|
|
131
|
+
* The day the product's part of its terms (from `legal`) last changed, as YYYY-MM-DD. The terms an
|
|
132
|
+
* account accepts are named by the later of this day and that of the baukasten's part.
|
|
133
133
|
*/
|
|
134
134
|
termsDate: string;
|
|
135
135
|
legal: ProductLegal;
|
package/dist/server/legal/de.js
CHANGED
|
@@ -67,7 +67,6 @@ export const de = {
|
|
|
67
67
|
return {
|
|
68
68
|
title: 'Datenschutzerklärung',
|
|
69
69
|
blocks: [
|
|
70
|
-
version(f),
|
|
71
70
|
paragraph(`Diese Erklärung beschreibt, welche Personendaten ${f.name} bearbeitet, wozu, wo und wie lange. Verantwortlich ist ${who(f)}, erreichbar unter `, mail(FLEET.mailbox), '. Sie folgt dem Bundesgesetz über den Datenschutz (DSG) und, wo sie anwendbar ist, der Datenschutz-Grundverordnung der EU (DSGVO).'),
|
|
72
71
|
heading('Was wir bearbeiten, wozu und gestützt worauf'),
|
|
73
72
|
list([
|
package/dist/server/legal/en.js
CHANGED
|
@@ -67,7 +67,6 @@ export const en = {
|
|
|
67
67
|
return {
|
|
68
68
|
title: 'Privacy policy',
|
|
69
69
|
blocks: [
|
|
70
|
-
version(f),
|
|
71
70
|
paragraph(`This policy explains which personal data ${f.name} processes, why, where and for how long. The controller is ${who(f)}, reachable at `, mail(FLEET.mailbox), '. It follows the Swiss Federal Act on Data Protection (FADP) and, where it applies, the EU General Data Protection Regulation (GDPR).'),
|
|
72
71
|
heading('What we process, why, and on what basis'),
|
|
73
72
|
list([
|
|
@@ -110,5 +110,9 @@ export declare const FLEET: {
|
|
|
110
110
|
/** The mail relay logs each recipient and the state of each delivery; journald keeps it this long. */
|
|
111
111
|
readonly relayLogDays: 30;
|
|
112
112
|
};
|
|
113
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* The providers of the fleet that process data for the operator, which the terms of a web app and
|
|
115
|
+
* the privacy text of a Shopify app name as sub-processors: every fact above with that role, so a new
|
|
116
|
+
* one changes both texts, which promise 30 days of notice of it.
|
|
117
|
+
*/
|
|
114
118
|
export declare const FLEET_PROCESSORS: ("Cloudflare, Inc." | "Hetzner Online GmbH" | "Neon, LLC" | "Infomaniak Network SA")[];
|
|
@@ -77,13 +77,9 @@ export const FLEET = {
|
|
|
77
77
|
/** The mail relay logs each recipient and the state of each delivery; journald keeps it this long. */
|
|
78
78
|
relayLogDays: 30
|
|
79
79
|
};
|
|
80
|
-
/**
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
FLEET.mail
|
|
87
|
-
]
|
|
88
|
-
.filter((provider) => provider.role === 'processor')
|
|
89
|
-
.map((provider) => provider.name);
|
|
80
|
+
/**
|
|
81
|
+
* The providers of the fleet that process data for the operator, which the terms of a web app and
|
|
82
|
+
* the privacy text of a Shopify app name as sub-processors: every fact above with that role, so a new
|
|
83
|
+
* one changes both texts, which promise 30 days of notice of it.
|
|
84
|
+
*/
|
|
85
|
+
export const FLEET_PROCESSORS = Object.values(FLEET).flatMap((fact) => typeof fact === 'object' && 'role' in fact && fact.role === 'processor' ? [fact.name] : []);
|
package/dist/server/terms.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The day the baukasten's part of the
|
|
3
|
-
*
|
|
2
|
+
* The day the baukasten's part of the terms last changed (legal/, legal.test.ts holds their checksum
|
|
3
|
+
* with it); a change to that part sets it anew.
|
|
4
4
|
*/
|
|
5
5
|
export declare const BAUKASTEN_TERMS_DATE = "2026-10-08";
|
|
6
6
|
/** The name of the terms from the two days, each YYYY-MM-DD, which sort like their dates. */
|
package/dist/server/terms.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* The day the baukasten's part of the
|
|
3
|
-
*
|
|
2
|
+
* The day the baukasten's part of the terms last changed (legal/, legal.test.ts holds their checksum
|
|
3
|
+
* with it); a change to that part sets it anew.
|
|
4
4
|
*/
|
|
5
5
|
export const BAUKASTEN_TERMS_DATE = '2026-10-08';
|
|
6
6
|
/** The name of the terms from the two days, each YYYY-MM-DD, which sort like their dates. */
|
package/dist/shopify/legal/de.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { heading, lettered, link, list, longDate, mail, note, paragraph, strong } from '../../server/legal/document.js';
|
|
2
|
-
import { FLEET } from '../../server/legal/fleet.js';
|
|
3
|
-
import {
|
|
2
|
+
import { FLEET, FLEET_PROCESSORS } from '../../server/legal/fleet.js';
|
|
3
|
+
import { SHOPIFY } from './shopify.js';
|
|
4
4
|
const { cloudflare, hoster, neon, webServer } = FLEET;
|
|
5
5
|
const CONTRACT = 'Erfüllung des Vertrags, Art. 6 Abs. 1 lit. b DSGVO';
|
|
6
6
|
const TRANSFER = {
|
|
@@ -31,7 +31,7 @@ const who = (f) => `${f.operator.name}, ${f.operator.address}`;
|
|
|
31
31
|
export function de(f) {
|
|
32
32
|
const { data, recipients } = f.privacy;
|
|
33
33
|
const processors = [
|
|
34
|
-
...
|
|
34
|
+
...FLEET_PROCESSORS,
|
|
35
35
|
...recipients
|
|
36
36
|
.filter((recipient) => recipient.role === 'processor')
|
|
37
37
|
.map((recipient) => recipient.name)
|
package/dist/shopify/legal/en.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { heading, lettered, link, list, longDate, mail, note, paragraph, strong } from '../../server/legal/document.js';
|
|
2
|
-
import { FLEET } from '../../server/legal/fleet.js';
|
|
3
|
-
import {
|
|
2
|
+
import { FLEET, FLEET_PROCESSORS } from '../../server/legal/fleet.js';
|
|
3
|
+
import { SHOPIFY } from './shopify.js';
|
|
4
4
|
const { cloudflare, hoster, neon, webServer } = FLEET;
|
|
5
5
|
const CONTRACT = 'performance of the contract, Art. 6(1)(b) GDPR';
|
|
6
6
|
const TRANSFER = {
|
|
@@ -31,7 +31,7 @@ const who = (f) => `${f.operator.name}, ${f.operator.address}`;
|
|
|
31
31
|
export function en(f) {
|
|
32
32
|
const { data, recipients } = f.privacy;
|
|
33
33
|
const processors = [
|
|
34
|
-
...
|
|
34
|
+
...FLEET_PROCESSORS,
|
|
35
35
|
...recipients
|
|
36
36
|
.filter((recipient) => recipient.role === 'processor')
|
|
37
37
|
.map((recipient) => recipient.name)
|
|
@@ -8,9 +8,3 @@ export declare const SHOPIFY: {
|
|
|
8
8
|
/** Shopify sends shop/redact this long after a store removed the app. */
|
|
9
9
|
readonly redactHours: 48;
|
|
10
10
|
};
|
|
11
|
-
/**
|
|
12
|
-
* The providers of the fleet that process data for an app, which the merchant approves as
|
|
13
|
-
* sub-processors: not Stripe, since Shopify bills the app. Should one stop being a processor of the
|
|
14
|
-
* operator, this does not compile until the text follows.
|
|
15
|
-
*/
|
|
16
|
-
export declare const APP_PROCESSORS: ("Cloudflare, Inc." | "Hetzner Online GmbH" | "Neon, LLC" | "Infomaniak Network SA")[];
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// fleet (server/legal/fleet.ts), and the only place of them. They come from Shopify: its privacy
|
|
3
3
|
// policy (SHOPIFY.privacy) and its documentation of the privacy webhooks; a change there is a change
|
|
4
4
|
// here.
|
|
5
|
-
import { FLEET } from '../../server/legal/fleet.js';
|
|
6
5
|
export const SHOPIFY = {
|
|
7
6
|
/**
|
|
8
7
|
* Where Shopify says what it processes, under the agreement of each merchant with Shopify and by
|
|
@@ -13,9 +12,3 @@ export const SHOPIFY = {
|
|
|
13
12
|
/** Shopify sends shop/redact this long after a store removed the app. */
|
|
14
13
|
redactHours: 48
|
|
15
14
|
};
|
|
16
|
-
/**
|
|
17
|
-
* The providers of the fleet that process data for an app, which the merchant approves as
|
|
18
|
-
* sub-processors: not Stripe, since Shopify bills the app. Should one stop being a processor of the
|
|
19
|
-
* operator, this does not compile until the text follows.
|
|
20
|
-
*/
|
|
21
|
-
export const APP_PROCESSORS = [FLEET.cloudflare, FLEET.hoster, FLEET.neon, FLEET.mail].map((provider) => provider.name);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tollwyn/baukasten",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.4",
|
|
4
4
|
"description": "What every product built on this kit shares: configuration, log and server, database with two-layer migrations, health, accounts with sessions and API keys, limits, mail, payment through Stripe, the numbers for sales, the frame and pages, the stubs that hang them into a product and the check of a product, the ESLint config and knip preset of its gate, and the tools to test one, its connection test among them; and for a Shopify app its installation with tokens, the frame of the admin, its webhooks, its plan through the Partner API and its privacy text.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"type": "module",
|