@openpolicy/sdk 0.0.17 → 0.0.18

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.
@@ -0,0 +1,26 @@
1
+ //#region src/auto-collected.d.ts
2
+ /**
3
+ * Placeholder populated by `@openpolicy/vite-auto-collect` during a Vite
4
+ * build. The plugin intercepts this module's resolution and replaces it with
5
+ * the scanned categories, so the literal default below is only used as a
6
+ * fallback when no auto-collect plugin is active — in which case spreading
7
+ * it into `dataCollected` is a no-op.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { dataCollected, defineConfig } from "@openpolicy/sdk";
12
+ *
13
+ * export default defineConfig({
14
+ * privacy: {
15
+ * dataCollected: {
16
+ * ...dataCollected,
17
+ * "Manually-tracked Category": ["Field A"],
18
+ * },
19
+ * },
20
+ * });
21
+ * ```
22
+ */
23
+ declare const dataCollected: Record<string, string[]>;
24
+ //#endregion
25
+ export { dataCollected };
26
+ //# sourceMappingURL=auto-collected.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-collected.d.ts","names":[],"sources":["../src/auto-collected.ts"],"mappings":";;AAqBA;;;;;;;;;;;;;;;;;;;;cAAa,aAAA,EAAe,MAAA"}
@@ -0,0 +1,27 @@
1
+ //#region src/auto-collected.ts
2
+ /**
3
+ * Placeholder populated by `@openpolicy/vite-auto-collect` during a Vite
4
+ * build. The plugin intercepts this module's resolution and replaces it with
5
+ * the scanned categories, so the literal default below is only used as a
6
+ * fallback when no auto-collect plugin is active — in which case spreading
7
+ * it into `dataCollected` is a no-op.
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * import { dataCollected, defineConfig } from "@openpolicy/sdk";
12
+ *
13
+ * export default defineConfig({
14
+ * privacy: {
15
+ * dataCollected: {
16
+ * ...dataCollected,
17
+ * "Manually-tracked Category": ["Field A"],
18
+ * },
19
+ * },
20
+ * });
21
+ * ```
22
+ */
23
+ const dataCollected = {};
24
+ //#endregion
25
+ export { dataCollected };
26
+
27
+ //# sourceMappingURL=auto-collected.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-collected.js","names":[],"sources":["../src/auto-collected.ts"],"sourcesContent":["/**\n * Placeholder populated by `@openpolicy/vite-auto-collect` during a Vite\n * build. The plugin intercepts this module's resolution and replaces it with\n * the scanned categories, so the literal default below is only used as a\n * fallback when no auto-collect plugin is active — in which case spreading\n * it into `dataCollected` is a no-op.\n *\n * @example\n * ```ts\n * import { dataCollected, defineConfig } from \"@openpolicy/sdk\";\n *\n * export default defineConfig({\n * privacy: {\n * dataCollected: {\n * ...dataCollected,\n * \"Manually-tracked Category\": [\"Field A\"],\n * },\n * },\n * });\n * ```\n */\nexport const dataCollected: Record<string, string[]> = {};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAqBA,MAAa,gBAA0C,EAAE"}
package/dist/index.d.ts CHANGED
@@ -1,5 +1,9 @@
1
+ import { dataCollected } from "./auto-collected.js";
2
+
1
3
  //#region ../core/dist/index.d.ts
2
4
  type Jurisdiction = "us" | "eu" | "ca" | "au" | "nz" | "other";
5
+ type UserRight = "access" | "rectification" | "erasure" | "portability" | "restriction" | "objection" | "opt_out_sale" | "non_discrimination";
6
+ type LegalBasis = "consent" | "contract" | "legal_obligation" | "vital_interests" | "public_task" | "legitimate_interests";
3
7
  type CompanyConfig = {
4
8
  name: string;
5
9
  legalName: string;
@@ -10,7 +14,7 @@ type PrivacyPolicyConfig = {
10
14
  effectiveDate: string;
11
15
  company: CompanyConfig;
12
16
  dataCollected: Record<string, string[]>;
13
- legalBasis: string;
17
+ legalBasis: LegalBasis | LegalBasis[];
14
18
  retention: Record<string, string>;
15
19
  cookies: {
16
20
  essential: boolean;
@@ -20,8 +24,9 @@ type PrivacyPolicyConfig = {
20
24
  thirdParties: {
21
25
  name: string;
22
26
  purpose: string;
27
+ policyUrl?: string;
23
28
  }[];
24
- userRights: string[];
29
+ userRights: UserRight[];
25
30
  jurisdictions: Jurisdiction[];
26
31
  children?: {
27
32
  underAge: number;
@@ -127,8 +132,209 @@ type OpenPolicyConfig = {
127
132
  cookie?: Omit<CookiePolicyConfig, "company">;
128
133
  };
129
134
  //#endregion
135
+ //#region src/collecting.d.ts
136
+ /**
137
+ * Declares data collected at the point of storage. Returns `value` unchanged
138
+ * at runtime — the Vite plugin / CLI static analyser (OP-152) will scan calls
139
+ * to `collecting()` at build time and merge the declarations into the
140
+ * compiled privacy policy.
141
+ *
142
+ * The third argument is a plain object literal whose **keys** are field names
143
+ * matching your stored value (for convenient access without a typed callback)
144
+ * and whose **values** are the human-readable labels used in the compiled
145
+ * policy. Only the string values are used by the analyser; the object is
146
+ * never evaluated at runtime. This shape lets you:
147
+ * - keep `value` matching your ORM/table schema exactly,
148
+ * - describe fields with friendly labels for the policy,
149
+ * - omit fields from the policy by leaving them out of the label record
150
+ * (e.g. `hashedPassword`).
151
+ *
152
+ * The category argument and the string values of the label record must be
153
+ * string literals — dynamic values are silently skipped by the analyser.
154
+ *
155
+ * @example
156
+ * ```ts
157
+ * import { collecting } from "@openpolicy/sdk";
158
+ *
159
+ * export async function createUser(name: string, email: string) {
160
+ * return db.insert(users).values(
161
+ * collecting(
162
+ * "Account Information",
163
+ * { name, email }, // real ORM columns — returned unchanged
164
+ * { name: "Name", email: "Email address" },
165
+ * ),
166
+ * );
167
+ * }
168
+ * ```
169
+ */
170
+ declare function collecting<T>(_category: string, value: T, _label: Partial<Record<keyof T, string>>): T;
171
+ //#endregion
172
+ //#region src/compliance.d.ts
173
+ declare const Compliance: {
174
+ readonly GDPR: {
175
+ readonly jurisdictions: Jurisdiction[];
176
+ readonly legalBasis: LegalBasis[];
177
+ readonly userRights: UserRight[];
178
+ };
179
+ readonly CCPA: {
180
+ readonly jurisdictions: Jurisdiction[];
181
+ readonly userRights: UserRight[];
182
+ };
183
+ };
184
+ //#endregion
185
+ //#region src/data.d.ts
186
+ declare const DataCategories: {
187
+ readonly AccountInfo: {
188
+ readonly "Account Information": readonly ["Name", "Email address"];
189
+ };
190
+ readonly SessionData: {
191
+ readonly "Session Data": readonly ["IP address", "User agent", "Browser type"];
192
+ };
193
+ readonly PaymentInfo: {
194
+ readonly "Payment Information": readonly ["Card last 4 digits", "Billing name", "Billing address"];
195
+ };
196
+ readonly UsageData: {
197
+ readonly "Usage Data": readonly ["Pages visited", "Features used", "Time spent"];
198
+ };
199
+ readonly DeviceInfo: {
200
+ readonly "Device Information": readonly ["Device type", "Operating system", "Browser version"];
201
+ };
202
+ readonly LocationData: {
203
+ readonly "Location Data": readonly ["Country", "City", "Timezone"];
204
+ };
205
+ readonly Communications: {
206
+ readonly Communications: readonly ["Email content", "Support tickets"];
207
+ };
208
+ };
209
+ declare const Retention: {
210
+ readonly UntilAccountDeletion: "Until account deletion";
211
+ readonly UntilSessionExpiry: "Until session expiry";
212
+ readonly ThirtyDays: "30 days";
213
+ readonly NinetyDays: "90 days";
214
+ readonly OneYear: "1 year";
215
+ readonly ThreeYears: "3 years";
216
+ readonly AsRequiredByLaw: "As required by applicable law";
217
+ };
218
+ declare const Rights: {
219
+ readonly Access: "access";
220
+ readonly Rectification: "rectification";
221
+ readonly Erasure: "erasure";
222
+ readonly Portability: "portability";
223
+ readonly Restriction: "restriction";
224
+ readonly Objection: "objection";
225
+ readonly OptOutSale: "opt_out_sale";
226
+ readonly NonDiscrimination: "non_discrimination";
227
+ };
228
+ declare const LegalBases: {
229
+ readonly Consent: "consent";
230
+ readonly Contract: "contract";
231
+ readonly LegalObligation: "legal_obligation";
232
+ readonly VitalInterests: "vital_interests";
233
+ readonly PublicTask: "public_task";
234
+ readonly LegitimateInterests: "legitimate_interests";
235
+ };
236
+ //#endregion
237
+ //#region src/providers.d.ts
238
+ declare const Providers: {
239
+ Stripe: {
240
+ name: string;
241
+ purpose: string;
242
+ policyUrl: string;
243
+ };
244
+ Paddle: {
245
+ name: string;
246
+ purpose: string;
247
+ policyUrl: string;
248
+ };
249
+ LemonSqueezy: {
250
+ name: string;
251
+ purpose: string;
252
+ policyUrl: string;
253
+ };
254
+ PayPal: {
255
+ name: string;
256
+ purpose: string;
257
+ policyUrl: string;
258
+ };
259
+ GoogleAnalytics: {
260
+ name: string;
261
+ purpose: string;
262
+ policyUrl: string;
263
+ };
264
+ PostHog: {
265
+ name: string;
266
+ purpose: string;
267
+ policyUrl: string;
268
+ };
269
+ Plausible: {
270
+ name: string;
271
+ purpose: string;
272
+ policyUrl: string;
273
+ };
274
+ Mixpanel: {
275
+ name: string;
276
+ purpose: string;
277
+ policyUrl: string;
278
+ };
279
+ Vercel: {
280
+ name: string;
281
+ purpose: string;
282
+ policyUrl: string;
283
+ };
284
+ Cloudflare: {
285
+ name: string;
286
+ purpose: string;
287
+ policyUrl: string;
288
+ };
289
+ AWS: {
290
+ name: string;
291
+ purpose: string;
292
+ policyUrl: string;
293
+ };
294
+ Auth0: {
295
+ name: string;
296
+ purpose: string;
297
+ policyUrl: string;
298
+ };
299
+ Clerk: {
300
+ name: string;
301
+ purpose: string;
302
+ policyUrl: string;
303
+ };
304
+ Resend: {
305
+ name: string;
306
+ purpose: string;
307
+ policyUrl: string;
308
+ };
309
+ Postmark: {
310
+ name: string;
311
+ purpose: string;
312
+ policyUrl: string;
313
+ };
314
+ SendGrid: {
315
+ name: string;
316
+ purpose: string;
317
+ policyUrl: string;
318
+ };
319
+ Loops: {
320
+ name: string;
321
+ purpose: string;
322
+ policyUrl: string;
323
+ };
324
+ Sentry: {
325
+ name: string;
326
+ purpose: string;
327
+ policyUrl: string;
328
+ };
329
+ Datadog: {
330
+ name: string;
331
+ purpose: string;
332
+ policyUrl: string;
333
+ };
334
+ };
335
+ //#endregion
130
336
  //#region src/index.d.ts
131
337
  declare function defineConfig(config: OpenPolicyConfig): OpenPolicyConfig;
132
338
  //#endregion
133
- export { type CookiePolicyConfig, type OpenPolicyConfig, type PrivacyPolicyConfig, type TermsOfServiceConfig, defineConfig };
339
+ export { Compliance, type CookiePolicyConfig, DataCategories, LegalBases, type LegalBasis, type OpenPolicyConfig, type PrivacyPolicyConfig, Providers, Retention, Rights, type TermsOfServiceConfig, type UserRight, collecting, dataCollected, defineConfig };
134
340
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":["OutputFormat","CompileOptions","formats","Jurisdiction","CompanyConfig","name","legalName","address","contact","PrivacyPolicyConfig","Record","effectiveDate","company","dataCollected","legalBasis","retention","cookies","essential","analytics","marketing","thirdParties","purpose","userRights","jurisdictions","children","underAge","noticeUrl","DisputeResolutionMethod","TermsOfServiceConfig","acceptance","methods","eligibility","minimumAge","jurisdictionRestrictions","accounts","registrationRequired","userResponsibleForCredentials","companyCanTerminate","prohibitedUses","userContent","usersOwnContent","licenseGrantedToCompany","licenseDescription","companyCanRemoveContent","intellectualProperty","companyOwnsService","usersMayNotCopy","payments","hasPaidFeatures","refundPolicy","priceChangesNotice","availability","noUptimeGuarantee","maintenanceWindows","termination","userCanTerminate","effectOfTermination","disclaimers","serviceProvidedAsIs","noWarranties","limitationOfLiability","excludesIndirectDamages","liabilityCap","indemnification","userIndemnifiesCompany","scope","thirdPartyServices","disputeResolution","method","venue","classActionWaiver","governingLaw","jurisdiction","changesPolicy","noticeMethod","noticePeriodDays","privacyPolicyUrl","CookiePolicyCookies","key","CookiePolicyConfig","policyUrl","trackingTechnologies","consentMechanism","hasBanner","hasPreferencePanel","canWithdraw","PolicyInput","type","OpenPolicyConfig","Omit","privacy","terms","cookie","isOpenPolicyConfig","value","ValidationIssue","level","message","CookieConsent","CookieConsentStatus","acceptAll","config","rejectAll","NodeContext","reason","TextNode","context","BoldNode","ItalicNode","LinkNode","href","InlineNode","HeadingNode","ParagraphNode","ListItemNode","ListNode","ordered","items","ContentNode","DocumentSection","id","content","PolicyType","Document","policyType","sections","Node","heading","levelOrContext","text","bold","italic","link","p","li","ul","ol","section","compile","input","validatePrivacyPolicy","validateCookiePolicy","validateTermsOfService","expandOpenPolicyConfig"],"sources":["../../core/dist/index.d.ts","../src/index.ts"],"mappings":";KAKKG,YAAAA;AAAAA,KACAC,aAAAA;EACHC,IAAAA;EACAC,SAAAA;EACAC,OAAAA;EACAC,OAAAA;AAAAA;AAAAA,KAEGC,mBAAAA;EACHE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTS,aAAAA,EAAeH,MAAAA;EACfI,UAAAA;EACAC,SAAAA,EAAWL,MAAAA;EACXM,OAAAA;IACEC,SAAAA;IACAC,SAAAA;IACAC,SAAAA;EAAAA;EAEFC,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;EAAAA;EAEFC,UAAAA;EACAC,aAAAA,EAAepB,YAAAA;EACfqB,QAAAA;IACEC,QAAAA;IACAC,SAAAA;EAAAA;AAAAA;AAAAA,KAGCC,uBAAAA;AAAAA,KACAC,oBAAAA;EACHjB,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTyB,UAAAA;IACEC,OAAAA;EAAAA;EAEFC,WAAAA;IACEC,UAAAA;IACAC,wBAAAA;EAAAA;EAEFC,QAAAA;IACEC,oBAAAA;IACAC,6BAAAA;IACAC,mBAAAA;EAAAA;EAEFC,cAAAA;EACAC,WAAAA;IACEC,eAAAA;IACAC,uBAAAA;IACAC,kBAAAA;IACAC,uBAAAA;EAAAA;EAEFC,oBAAAA;IACEC,kBAAAA;IACAC,eAAAA;EAAAA;EAEFC,QAAAA;IACEC,eAAAA;IACAC,YAAAA;IACAC,kBAAAA;EAAAA;EAEFC,YAAAA;IACEC,iBAAAA;IACAC,kBAAAA;EAAAA;EAEFC,WAAAA;IACEjB,mBAAAA;IACAkB,gBAAAA;IACAC,mBAAAA;EAAAA;EAEFC,WAAAA;IACEC,mBAAAA;IACAC,YAAAA;EAAAA;EAEFC,qBAAAA;IACEC,uBAAAA;IACAC,YAAAA;EAAAA;EAEFC,eAAAA;IACEC,sBAAAA;IACAC,KAAAA;EAAAA;EAEFC,kBAAAA;IACE7D,IAAAA;IACAgB,OAAAA;EAAAA;EAEF8C,iBAAAA;IACEC,MAAAA,EAAQzC,uBAAAA;IACR0C,KAAAA;IACAC,iBAAAA;EAAAA;EAEFC,YAAAA;IACEC,YAAAA;EAAAA;EAEFC,aAAAA;IACEC,YAAAA;IACAC,gBAAAA;EAAAA;EAEFC,gBAAAA;AAAAA;AAAAA,KAEGC,mBAAAA;EACH5D,SAAAA;EAAAA,CACC6D,GAAAA;AAAAA;AAAAA,KAEEC,kBAAAA;EACHpE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTY,OAAAA,EAAS6D,mBAAAA;EACTzD,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;IACA2D,SAAAA;EAAAA;EAEFC,oBAAAA;EACAC,gBAAAA;IACEC,SAAAA;IACAC,kBAAAA;IACAC,WAAAA;EAAAA;EAEF9D,aAAAA,EAAepB,YAAAA;AAAAA;AAAAA,KASZqF,gBAAAA;EACH5E,OAAAA,EAASR,aAAAA;EACTsF,OAAAA,GAAUD,IAAAA,CAAKhF,mBAAAA;EACfkF,KAAAA,GAAQF,IAAAA,CAAK7D,oBAAAA;EACbgE,MAAAA,GAASH,IAAAA,CAAKV,kBAAAA;AAAAA;;;iBChIA,YAAA,CAAa,MAAA,EAAQ,gBAAA,GAAmB,gBAAA"}
1
+ {"version":3,"file":"index.d.ts","names":["OutputFormat","CompileOptions","formats","Jurisdiction","UserRight","LegalBasis","CompanyConfig","name","legalName","address","contact","PrivacyPolicyConfig","Record","effectiveDate","company","dataCollected","legalBasis","retention","cookies","essential","analytics","marketing","thirdParties","purpose","policyUrl","userRights","jurisdictions","children","underAge","noticeUrl","DisputeResolutionMethod","TermsOfServiceConfig","acceptance","methods","eligibility","minimumAge","jurisdictionRestrictions","accounts","registrationRequired","userResponsibleForCredentials","companyCanTerminate","prohibitedUses","userContent","usersOwnContent","licenseGrantedToCompany","licenseDescription","companyCanRemoveContent","intellectualProperty","companyOwnsService","usersMayNotCopy","payments","hasPaidFeatures","refundPolicy","priceChangesNotice","availability","noUptimeGuarantee","maintenanceWindows","termination","userCanTerminate","effectOfTermination","disclaimers","serviceProvidedAsIs","noWarranties","limitationOfLiability","excludesIndirectDamages","liabilityCap","indemnification","userIndemnifiesCompany","scope","thirdPartyServices","disputeResolution","method","venue","classActionWaiver","governingLaw","jurisdiction","changesPolicy","noticeMethod","noticePeriodDays","privacyPolicyUrl","CookiePolicyCookies","key","CookiePolicyConfig","trackingTechnologies","consentMechanism","hasBanner","hasPreferencePanel","canWithdraw","PolicyInput","type","OpenPolicyConfig","Omit","privacy","terms","cookie","isOpenPolicyConfig","value","ValidationIssue","level","message","CookieConsent","CookieConsentStatus","acceptAll","config","rejectAll","NodeContext","reason","TextNode","context","BoldNode","ItalicNode","LinkNode","href","InlineNode","HeadingNode","ParagraphNode","ListItemNode","ListNode","ordered","items","ContentNode","DocumentSection","id","content","PolicyType","Document","policyType","sections","Node","heading","levelOrContext","text","bold","italic","link","p","li","ul","ol","section","compile","input","validatePrivacyPolicy","validateCookiePolicy","validateTermsOfService","expandOpenPolicyConfig"],"sources":["../../core/dist/index.d.ts","../src/collecting.ts","../src/compliance.ts","../src/data.ts","../src/providers.ts","../src/index.ts"],"mappings":";;;KAKKG,YAAAA;AAAAA,KACAC,SAAAA;AAAAA,KACAC,UAAAA;AAAAA,KACAC,aAAAA;EACHC,IAAAA;EACAC,SAAAA;EACAC,OAAAA;EACAC,OAAAA;AAAAA;AAAAA,KAEGC,mBAAAA;EACHE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTS,aAAAA,EAAeH,MAAAA;EACfI,UAAAA,EAAYX,UAAAA,GAAaA,UAAAA;EACzBY,SAAAA,EAAWL,MAAAA;EACXM,OAAAA;IACEC,SAAAA;IACAC,SAAAA;IACAC,SAAAA;EAAAA;EAEFC,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;IACAC,SAAAA;EAAAA;EAEFC,UAAAA,EAAYrB,SAAAA;EACZsB,aAAAA,EAAevB,YAAAA;EACfwB,QAAAA;IACEC,QAAAA;IACAC,SAAAA;EAAAA;AAAAA;AAAAA,KAGCC,uBAAAA;AAAAA,KACAC,oBAAAA;EACHlB,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACT0B,UAAAA;IACEC,OAAAA;EAAAA;EAEFC,WAAAA;IACEC,UAAAA;IACAC,wBAAAA;EAAAA;EAEFC,QAAAA;IACEC,oBAAAA;IACAC,6BAAAA;IACAC,mBAAAA;EAAAA;EAEFC,cAAAA;EACAC,WAAAA;IACEC,eAAAA;IACAC,uBAAAA;IACAC,kBAAAA;IACAC,uBAAAA;EAAAA;EAEFC,oBAAAA;IACEC,kBAAAA;IACAC,eAAAA;EAAAA;EAEFC,QAAAA;IACEC,eAAAA;IACAC,YAAAA;IACAC,kBAAAA;EAAAA;EAEFC,YAAAA;IACEC,iBAAAA;IACAC,kBAAAA;EAAAA;EAEFC,WAAAA;IACEjB,mBAAAA;IACAkB,gBAAAA;IACAC,mBAAAA;EAAAA;EAEFC,WAAAA;IACEC,mBAAAA;IACAC,YAAAA;EAAAA;EAEFC,qBAAAA;IACEC,uBAAAA;IACAC,YAAAA;EAAAA;EAEFC,eAAAA;IACEC,sBAAAA;IACAC,KAAAA;EAAAA;EAEFC,kBAAAA;IACE9D,IAAAA;IACAgB,OAAAA;EAAAA;EAEF+C,iBAAAA;IACEC,MAAAA,EAAQzC,uBAAAA;IACR0C,KAAAA;IACAC,iBAAAA;EAAAA;EAEFC,YAAAA;IACEC,YAAAA;EAAAA;EAEFC,aAAAA;IACEC,YAAAA;IACAC,gBAAAA;EAAAA;EAEFC,gBAAAA;AAAAA;AAAAA,KAEGC,mBAAAA;EACH7D,SAAAA;EAAAA,CACC8D,GAAAA;AAAAA;AAAAA,KAEEC,kBAAAA;EACHrE,aAAAA;EACAC,OAAAA,EAASR,aAAAA;EACTY,OAAAA,EAAS8D,mBAAAA;EACT1D,YAAAA;IACEf,IAAAA;IACAgB,OAAAA;IACAC,SAAAA;EAAAA;EAEF2D,oBAAAA;EACAC,gBAAAA;IACEC,SAAAA;IACAC,kBAAAA;IACAC,WAAAA;EAAAA;EAEF7D,aAAAA,EAAevB,YAAAA;AAAAA;AAAAA,KASZuF,gBAAAA;EACH5E,OAAAA,EAASR,aAAAA;EACTsF,OAAAA,GAAUD,IAAAA,CAAKhF,mBAAAA;EACfkF,KAAAA,GAAQF,IAAAA,CAAK5D,oBAAAA;EACb+D,MAAAA,GAASH,IAAAA,CAAKT,kBAAAA;AAAAA;;;;;;AAzIO;;;;;AAEN;;;;;AACH;;;;;AACC;;;;;;;;;;AAKN;;;;;;iBCsBO,UAAA,GAAA,CACf,SAAA,UACA,KAAA,EAAO,CAAA,EACP,MAAA,EAAQ,OAAA,CAAQ,MAAA,OAAa,CAAA,aAC3B,CAAA;;;cCpCU,UAAA;EAAA;4BAEc,YAAA;IAAA,qBACe,UAAA;IAAA,qBAQnC,SAAA;EAAA;EAAA;4BAGoB,YAAA;IAAA,qBAMpB,SAAA;EAAA;AAAA;;;cCpBM,cAAA;EAAA;;;;;;;;;;;;;;;;;;;;;;cA4BA,SAAA;EAAA;;;;;;;;cAUA,MAAA;EAAA;;;;;;;;;cAWA,UAAA;EAAA;;;;;;;;;cCjDA,SAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBCeG,YAAA,CAAa,MAAA,EAAQ,gBAAA,GAAmB,gBAAA"}
package/dist/index.js CHANGED
@@ -1,8 +1,230 @@
1
+ import { dataCollected } from "./auto-collected.js";
2
+ //#region src/collecting.ts
3
+ /**
4
+ * Declares data collected at the point of storage. Returns `value` unchanged
5
+ * at runtime — the Vite plugin / CLI static analyser (OP-152) will scan calls
6
+ * to `collecting()` at build time and merge the declarations into the
7
+ * compiled privacy policy.
8
+ *
9
+ * The third argument is a plain object literal whose **keys** are field names
10
+ * matching your stored value (for convenient access without a typed callback)
11
+ * and whose **values** are the human-readable labels used in the compiled
12
+ * policy. Only the string values are used by the analyser; the object is
13
+ * never evaluated at runtime. This shape lets you:
14
+ * - keep `value` matching your ORM/table schema exactly,
15
+ * - describe fields with friendly labels for the policy,
16
+ * - omit fields from the policy by leaving them out of the label record
17
+ * (e.g. `hashedPassword`).
18
+ *
19
+ * The category argument and the string values of the label record must be
20
+ * string literals — dynamic values are silently skipped by the analyser.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * import { collecting } from "@openpolicy/sdk";
25
+ *
26
+ * export async function createUser(name: string, email: string) {
27
+ * return db.insert(users).values(
28
+ * collecting(
29
+ * "Account Information",
30
+ * { name, email }, // real ORM columns — returned unchanged
31
+ * { name: "Name", email: "Email address" },
32
+ * ),
33
+ * );
34
+ * }
35
+ * ```
36
+ */
37
+ function collecting(_category, value, _label) {
38
+ return value;
39
+ }
40
+ //#endregion
41
+ //#region src/compliance.ts
42
+ const Compliance = {
43
+ GDPR: {
44
+ jurisdictions: ["eu"],
45
+ legalBasis: ["legitimate_interests"],
46
+ userRights: [
47
+ "access",
48
+ "rectification",
49
+ "erasure",
50
+ "portability",
51
+ "restriction",
52
+ "objection"
53
+ ]
54
+ },
55
+ CCPA: {
56
+ jurisdictions: ["ca"],
57
+ userRights: [
58
+ "access",
59
+ "erasure",
60
+ "opt_out_sale",
61
+ "non_discrimination"
62
+ ]
63
+ }
64
+ };
65
+ //#endregion
66
+ //#region src/data.ts
67
+ const DataCategories = {
68
+ AccountInfo: { "Account Information": ["Name", "Email address"] },
69
+ SessionData: { "Session Data": [
70
+ "IP address",
71
+ "User agent",
72
+ "Browser type"
73
+ ] },
74
+ PaymentInfo: { "Payment Information": [
75
+ "Card last 4 digits",
76
+ "Billing name",
77
+ "Billing address"
78
+ ] },
79
+ UsageData: { "Usage Data": [
80
+ "Pages visited",
81
+ "Features used",
82
+ "Time spent"
83
+ ] },
84
+ DeviceInfo: { "Device Information": [
85
+ "Device type",
86
+ "Operating system",
87
+ "Browser version"
88
+ ] },
89
+ LocationData: { "Location Data": [
90
+ "Country",
91
+ "City",
92
+ "Timezone"
93
+ ] },
94
+ Communications: { Communications: ["Email content", "Support tickets"] }
95
+ };
96
+ const Retention = {
97
+ UntilAccountDeletion: "Until account deletion",
98
+ UntilSessionExpiry: "Until session expiry",
99
+ ThirtyDays: "30 days",
100
+ NinetyDays: "90 days",
101
+ OneYear: "1 year",
102
+ ThreeYears: "3 years",
103
+ AsRequiredByLaw: "As required by applicable law"
104
+ };
105
+ const Rights = {
106
+ Access: "access",
107
+ Rectification: "rectification",
108
+ Erasure: "erasure",
109
+ Portability: "portability",
110
+ Restriction: "restriction",
111
+ Objection: "objection",
112
+ OptOutSale: "opt_out_sale",
113
+ NonDiscrimination: "non_discrimination"
114
+ };
115
+ const LegalBases = {
116
+ Consent: "consent",
117
+ Contract: "contract",
118
+ LegalObligation: "legal_obligation",
119
+ VitalInterests: "vital_interests",
120
+ PublicTask: "public_task",
121
+ LegitimateInterests: "legitimate_interests"
122
+ };
123
+ //#endregion
124
+ //#region src/providers.ts
125
+ const Providers = {
126
+ Stripe: {
127
+ name: "Stripe",
128
+ purpose: "Payment processing",
129
+ policyUrl: "https://stripe.com/privacy"
130
+ },
131
+ Paddle: {
132
+ name: "Paddle",
133
+ purpose: "Payment processing and subscription management",
134
+ policyUrl: "https://www.paddle.com/legal/privacy"
135
+ },
136
+ LemonSqueezy: {
137
+ name: "Lemon Squeezy",
138
+ purpose: "Payment processing and subscription management",
139
+ policyUrl: "https://www.lemonsqueezy.com/privacy"
140
+ },
141
+ PayPal: {
142
+ name: "PayPal",
143
+ purpose: "Payment processing",
144
+ policyUrl: "https://www.paypal.com/webapps/mpp/ua/privacy-full"
145
+ },
146
+ GoogleAnalytics: {
147
+ name: "Google Analytics",
148
+ purpose: "Usage analytics",
149
+ policyUrl: "https://policies.google.com/privacy"
150
+ },
151
+ PostHog: {
152
+ name: "PostHog",
153
+ purpose: "Product analytics and session recording",
154
+ policyUrl: "https://posthog.com/privacy"
155
+ },
156
+ Plausible: {
157
+ name: "Plausible Analytics",
158
+ purpose: "Privacy-friendly usage analytics",
159
+ policyUrl: "https://plausible.io/privacy"
160
+ },
161
+ Mixpanel: {
162
+ name: "Mixpanel",
163
+ purpose: "Product analytics and event tracking",
164
+ policyUrl: "https://mixpanel.com/legal/privacy-policy"
165
+ },
166
+ Vercel: {
167
+ name: "Vercel",
168
+ purpose: "Hosting and deployment infrastructure",
169
+ policyUrl: "https://vercel.com/legal/privacy-policy"
170
+ },
171
+ Cloudflare: {
172
+ name: "Cloudflare",
173
+ purpose: "CDN, DNS, and security services",
174
+ policyUrl: "https://www.cloudflare.com/privacypolicy/"
175
+ },
176
+ AWS: {
177
+ name: "Amazon Web Services",
178
+ purpose: "Cloud infrastructure and hosting",
179
+ policyUrl: "https://aws.amazon.com/privacy/"
180
+ },
181
+ Auth0: {
182
+ name: "Auth0",
183
+ purpose: "Authentication and identity management",
184
+ policyUrl: "https://auth0.com/privacy"
185
+ },
186
+ Clerk: {
187
+ name: "Clerk",
188
+ purpose: "Authentication and user management",
189
+ policyUrl: "https://clerk.com/privacy"
190
+ },
191
+ Resend: {
192
+ name: "Resend",
193
+ purpose: "Transactional email delivery",
194
+ policyUrl: "https://resend.com/legal/privacy-policy"
195
+ },
196
+ Postmark: {
197
+ name: "Postmark",
198
+ purpose: "Transactional email delivery",
199
+ policyUrl: "https://wildbit.com/privacy-policy"
200
+ },
201
+ SendGrid: {
202
+ name: "SendGrid",
203
+ purpose: "Transactional email delivery",
204
+ policyUrl: "https://www.twilio.com/en-us/legal/privacy"
205
+ },
206
+ Loops: {
207
+ name: "Loops",
208
+ purpose: "Email marketing and automation",
209
+ policyUrl: "https://loops.so/privacy"
210
+ },
211
+ Sentry: {
212
+ name: "Sentry",
213
+ purpose: "Error monitoring and performance tracking",
214
+ policyUrl: "https://sentry.io/privacy/"
215
+ },
216
+ Datadog: {
217
+ name: "Datadog",
218
+ purpose: "Infrastructure monitoring and observability",
219
+ policyUrl: "https://www.datadoghq.com/legal/privacy/"
220
+ }
221
+ };
222
+ //#endregion
1
223
  //#region src/index.ts
2
224
  function defineConfig(config) {
3
225
  return config;
4
226
  }
5
227
  //#endregion
6
- export { defineConfig };
228
+ export { Compliance, DataCategories, LegalBases, Providers, Retention, Rights, collecting, dataCollected, defineConfig };
7
229
 
8
230
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":[],"sources":["../src/index.ts"],"sourcesContent":["import type { OpenPolicyConfig } from \"@openpolicy/core\";\n\nexport type {\n\tCookiePolicyConfig,\n\tOpenPolicyConfig,\n\tPrivacyPolicyConfig,\n\tTermsOfServiceConfig,\n} from \"@openpolicy/core\";\n\nexport function defineConfig(config: OpenPolicyConfig): OpenPolicyConfig {\n\treturn config;\n}\n"],"mappings":";AASA,SAAgB,aAAa,QAA4C;AACxE,QAAO"}
1
+ {"version":3,"file":"index.js","names":[],"sources":["../src/collecting.ts","../src/compliance.ts","../src/data.ts","../src/providers.ts","../src/index.ts"],"sourcesContent":["/**\n * Declares data collected at the point of storage. Returns `value` unchanged\n * at runtime — the Vite plugin / CLI static analyser (OP-152) will scan calls\n * to `collecting()` at build time and merge the declarations into the\n * compiled privacy policy.\n *\n * The third argument is a plain object literal whose **keys** are field names\n * matching your stored value (for convenient access without a typed callback)\n * and whose **values** are the human-readable labels used in the compiled\n * policy. Only the string values are used by the analyser; the object is\n * never evaluated at runtime. This shape lets you:\n * - keep `value` matching your ORM/table schema exactly,\n * - describe fields with friendly labels for the policy,\n * - omit fields from the policy by leaving them out of the label record\n * (e.g. `hashedPassword`).\n *\n * The category argument and the string values of the label record must be\n * string literals — dynamic values are silently skipped by the analyser.\n *\n * @example\n * ```ts\n * import { collecting } from \"@openpolicy/sdk\";\n *\n * export async function createUser(name: string, email: string) {\n * return db.insert(users).values(\n * collecting(\n * \"Account Information\",\n * { name, email }, // real ORM columns — returned unchanged\n * { name: \"Name\", email: \"Email address\" },\n * ),\n * );\n * }\n * ```\n */\nexport function collecting<T>(\n\t_category: string,\n\tvalue: T,\n\t_label: Partial<Record<keyof T, string>>,\n): T {\n\treturn value;\n}\n","import type { Jurisdiction, LegalBasis, UserRight } from \"@openpolicy/core\";\n\nexport const Compliance = {\n\tGDPR: {\n\t\tjurisdictions: [\"eu\"] as Jurisdiction[],\n\t\tlegalBasis: [\"legitimate_interests\"] as LegalBasis[],\n\t\tuserRights: [\n\t\t\t\"access\",\n\t\t\t\"rectification\",\n\t\t\t\"erasure\",\n\t\t\t\"portability\",\n\t\t\t\"restriction\",\n\t\t\t\"objection\",\n\t\t] as UserRight[],\n\t},\n\tCCPA: {\n\t\tjurisdictions: [\"ca\"] as Jurisdiction[],\n\t\tuserRights: [\n\t\t\t\"access\",\n\t\t\t\"erasure\",\n\t\t\t\"opt_out_sale\",\n\t\t\t\"non_discrimination\",\n\t\t] as UserRight[],\n\t},\n} as const;\n","import type { LegalBasis, UserRight } from \"@openpolicy/core\";\n\nexport const DataCategories = {\n\tAccountInfo: { \"Account Information\": [\"Name\", \"Email address\"] },\n\tSessionData: {\n\t\t\"Session Data\": [\"IP address\", \"User agent\", \"Browser type\"],\n\t},\n\tPaymentInfo: {\n\t\t\"Payment Information\": [\n\t\t\t\"Card last 4 digits\",\n\t\t\t\"Billing name\",\n\t\t\t\"Billing address\",\n\t\t],\n\t},\n\tUsageData: {\n\t\t\"Usage Data\": [\"Pages visited\", \"Features used\", \"Time spent\"],\n\t},\n\tDeviceInfo: {\n\t\t\"Device Information\": [\n\t\t\t\"Device type\",\n\t\t\t\"Operating system\",\n\t\t\t\"Browser version\",\n\t\t],\n\t},\n\tLocationData: { \"Location Data\": [\"Country\", \"City\", \"Timezone\"] },\n\tCommunications: {\n\t\tCommunications: [\"Email content\", \"Support tickets\"],\n\t},\n} as const;\n\nexport const Retention = {\n\tUntilAccountDeletion: \"Until account deletion\",\n\tUntilSessionExpiry: \"Until session expiry\",\n\tThirtyDays: \"30 days\",\n\tNinetyDays: \"90 days\",\n\tOneYear: \"1 year\",\n\tThreeYears: \"3 years\",\n\tAsRequiredByLaw: \"As required by applicable law\",\n} as const;\n\nexport const Rights = {\n\tAccess: \"access\",\n\tRectification: \"rectification\",\n\tErasure: \"erasure\",\n\tPortability: \"portability\",\n\tRestriction: \"restriction\",\n\tObjection: \"objection\",\n\tOptOutSale: \"opt_out_sale\",\n\tNonDiscrimination: \"non_discrimination\",\n} as const satisfies Record<string, UserRight>;\n\nexport const LegalBases = {\n\tConsent: \"consent\",\n\tContract: \"contract\",\n\tLegalObligation: \"legal_obligation\",\n\tVitalInterests: \"vital_interests\",\n\tPublicTask: \"public_task\",\n\tLegitimateInterests: \"legitimate_interests\",\n} as const satisfies Record<string, LegalBasis>;\n","type Provider = { name: string; purpose: string; policyUrl?: string };\n\nexport const Providers = {\n\t// Payments\n\tStripe: {\n\t\tname: \"Stripe\",\n\t\tpurpose: \"Payment processing\",\n\t\tpolicyUrl: \"https://stripe.com/privacy\",\n\t},\n\tPaddle: {\n\t\tname: \"Paddle\",\n\t\tpurpose: \"Payment processing and subscription management\",\n\t\tpolicyUrl: \"https://www.paddle.com/legal/privacy\",\n\t},\n\tLemonSqueezy: {\n\t\tname: \"Lemon Squeezy\",\n\t\tpurpose: \"Payment processing and subscription management\",\n\t\tpolicyUrl: \"https://www.lemonsqueezy.com/privacy\",\n\t},\n\tPayPal: {\n\t\tname: \"PayPal\",\n\t\tpurpose: \"Payment processing\",\n\t\tpolicyUrl: \"https://www.paypal.com/webapps/mpp/ua/privacy-full\",\n\t},\n\n\t// Analytics\n\tGoogleAnalytics: {\n\t\tname: \"Google Analytics\",\n\t\tpurpose: \"Usage analytics\",\n\t\tpolicyUrl: \"https://policies.google.com/privacy\",\n\t},\n\tPostHog: {\n\t\tname: \"PostHog\",\n\t\tpurpose: \"Product analytics and session recording\",\n\t\tpolicyUrl: \"https://posthog.com/privacy\",\n\t},\n\tPlausible: {\n\t\tname: \"Plausible Analytics\",\n\t\tpurpose: \"Privacy-friendly usage analytics\",\n\t\tpolicyUrl: \"https://plausible.io/privacy\",\n\t},\n\tMixpanel: {\n\t\tname: \"Mixpanel\",\n\t\tpurpose: \"Product analytics and event tracking\",\n\t\tpolicyUrl: \"https://mixpanel.com/legal/privacy-policy\",\n\t},\n\n\t// Infrastructure\n\tVercel: {\n\t\tname: \"Vercel\",\n\t\tpurpose: \"Hosting and deployment infrastructure\",\n\t\tpolicyUrl: \"https://vercel.com/legal/privacy-policy\",\n\t},\n\tCloudflare: {\n\t\tname: \"Cloudflare\",\n\t\tpurpose: \"CDN, DNS, and security services\",\n\t\tpolicyUrl: \"https://www.cloudflare.com/privacypolicy/\",\n\t},\n\tAWS: {\n\t\tname: \"Amazon Web Services\",\n\t\tpurpose: \"Cloud infrastructure and hosting\",\n\t\tpolicyUrl: \"https://aws.amazon.com/privacy/\",\n\t},\n\n\t// Auth\n\tAuth0: {\n\t\tname: \"Auth0\",\n\t\tpurpose: \"Authentication and identity management\",\n\t\tpolicyUrl: \"https://auth0.com/privacy\",\n\t},\n\tClerk: {\n\t\tname: \"Clerk\",\n\t\tpurpose: \"Authentication and user management\",\n\t\tpolicyUrl: \"https://clerk.com/privacy\",\n\t},\n\n\t// Email\n\tResend: {\n\t\tname: \"Resend\",\n\t\tpurpose: \"Transactional email delivery\",\n\t\tpolicyUrl: \"https://resend.com/legal/privacy-policy\",\n\t},\n\tPostmark: {\n\t\tname: \"Postmark\",\n\t\tpurpose: \"Transactional email delivery\",\n\t\tpolicyUrl: \"https://wildbit.com/privacy-policy\",\n\t},\n\tSendGrid: {\n\t\tname: \"SendGrid\",\n\t\tpurpose: \"Transactional email delivery\",\n\t\tpolicyUrl: \"https://www.twilio.com/en-us/legal/privacy\",\n\t},\n\tLoops: {\n\t\tname: \"Loops\",\n\t\tpurpose: \"Email marketing and automation\",\n\t\tpolicyUrl: \"https://loops.so/privacy\",\n\t},\n\n\t// Monitoring\n\tSentry: {\n\t\tname: \"Sentry\",\n\t\tpurpose: \"Error monitoring and performance tracking\",\n\t\tpolicyUrl: \"https://sentry.io/privacy/\",\n\t},\n\tDatadog: {\n\t\tname: \"Datadog\",\n\t\tpurpose: \"Infrastructure monitoring and observability\",\n\t\tpolicyUrl: \"https://www.datadoghq.com/legal/privacy/\",\n\t},\n} satisfies Record<string, Provider>;\n","import type { OpenPolicyConfig } from \"@openpolicy/core\";\n\nexport type {\n\tCookiePolicyConfig,\n\tLegalBasis,\n\tOpenPolicyConfig,\n\tPrivacyPolicyConfig,\n\tTermsOfServiceConfig,\n\tUserRight,\n} from \"@openpolicy/core\";\n\nexport { dataCollected } from \"./auto-collected\";\nexport { collecting } from \"./collecting\";\nexport { Compliance } from \"./compliance\";\nexport { DataCategories, LegalBases, Retention, Rights } from \"./data\";\nexport { Providers } from \"./providers\";\n\nexport function defineConfig(config: OpenPolicyConfig): OpenPolicyConfig {\n\treturn config;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,SAAgB,WACf,WACA,OACA,QACI;AACJ,QAAO;;;;ACrCR,MAAa,aAAa;CACzB,MAAM;EACL,eAAe,CAAC,KAAK;EACrB,YAAY,CAAC,uBAAuB;EACpC,YAAY;GACX;GACA;GACA;GACA;GACA;GACA;GACA;EACD;CACD,MAAM;EACL,eAAe,CAAC,KAAK;EACrB,YAAY;GACX;GACA;GACA;GACA;GACA;EACD;CACD;;;ACtBD,MAAa,iBAAiB;CAC7B,aAAa,EAAE,uBAAuB,CAAC,QAAQ,gBAAgB,EAAE;CACjE,aAAa,EACZ,gBAAgB;EAAC;EAAc;EAAc;EAAe,EAC5D;CACD,aAAa,EACZ,uBAAuB;EACtB;EACA;EACA;EACA,EACD;CACD,WAAW,EACV,cAAc;EAAC;EAAiB;EAAiB;EAAa,EAC9D;CACD,YAAY,EACX,sBAAsB;EACrB;EACA;EACA;EACA,EACD;CACD,cAAc,EAAE,iBAAiB;EAAC;EAAW;EAAQ;EAAW,EAAE;CAClE,gBAAgB,EACf,gBAAgB,CAAC,iBAAiB,kBAAkB,EACpD;CACD;AAED,MAAa,YAAY;CACxB,sBAAsB;CACtB,oBAAoB;CACpB,YAAY;CACZ,YAAY;CACZ,SAAS;CACT,YAAY;CACZ,iBAAiB;CACjB;AAED,MAAa,SAAS;CACrB,QAAQ;CACR,eAAe;CACf,SAAS;CACT,aAAa;CACb,aAAa;CACb,WAAW;CACX,YAAY;CACZ,mBAAmB;CACnB;AAED,MAAa,aAAa;CACzB,SAAS;CACT,UAAU;CACV,iBAAiB;CACjB,gBAAgB;CAChB,YAAY;CACZ,qBAAqB;CACrB;;;ACxDD,MAAa,YAAY;CAExB,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,cAAc;EACb,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CAGD,iBAAiB;EAChB,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,SAAS;EACR,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,WAAW;EACV,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,UAAU;EACT,MAAM;EACN,SAAS;EACT,WAAW;EACX;CAGD,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,YAAY;EACX,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,KAAK;EACJ,MAAM;EACN,SAAS;EACT,WAAW;EACX;CAGD,OAAO;EACN,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,OAAO;EACN,MAAM;EACN,SAAS;EACT,WAAW;EACX;CAGD,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,UAAU;EACT,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,UAAU;EACT,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,OAAO;EACN,MAAM;EACN,SAAS;EACT,WAAW;EACX;CAGD,QAAQ;EACP,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD,SAAS;EACR,MAAM;EACN,SAAS;EACT,WAAW;EACX;CACD;;;AC5FD,SAAgB,aAAa,QAA4C;AACxE,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openpolicy/sdk",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "type": "module",
5
5
  "description": "Public API for defining privacy policies with OpenPolicy",
6
6
  "license": "GPL-3.0-only",
@@ -20,7 +20,7 @@
20
20
  }
21
21
  },
22
22
  "scripts": {
23
- "dev": "rolldown -c --watch",
23
+ "dev": "rolldown --watch -c",
24
24
  "build": "rolldown -c",
25
25
  "check-types": "tsc --noEmit",
26
26
  "test": "bun test"