@openpolicy/core 0.0.12 → 0.0.13

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.
Files changed (84) hide show
  1. package/README.md +5 -4
  2. package/dist/index.d.ts +77 -29
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +424 -615
  5. package/dist/index.js.map +1 -1
  6. package/package.json +2 -4
  7. package/dist/index.test.d.ts +0 -2
  8. package/dist/index.test.d.ts.map +0 -1
  9. package/dist/privacy.d.ts +0 -7
  10. package/dist/privacy.d.ts.map +0 -1
  11. package/dist/privacy.test.d.ts +0 -2
  12. package/dist/privacy.test.d.ts.map +0 -1
  13. package/dist/renderers/html.d.ts +0 -3
  14. package/dist/renderers/html.d.ts.map +0 -1
  15. package/dist/renderers/markdown.d.ts +0 -3
  16. package/dist/renderers/markdown.d.ts.map +0 -1
  17. package/dist/templates/privacy/ccpa-supplement.d.ts +0 -3
  18. package/dist/templates/privacy/ccpa-supplement.d.ts.map +0 -1
  19. package/dist/templates/privacy/contact.d.ts +0 -3
  20. package/dist/templates/privacy/contact.d.ts.map +0 -1
  21. package/dist/templates/privacy/cookies.d.ts +0 -3
  22. package/dist/templates/privacy/cookies.d.ts.map +0 -1
  23. package/dist/templates/privacy/data-collected.d.ts +0 -3
  24. package/dist/templates/privacy/data-collected.d.ts.map +0 -1
  25. package/dist/templates/privacy/data-retention.d.ts +0 -3
  26. package/dist/templates/privacy/data-retention.d.ts.map +0 -1
  27. package/dist/templates/privacy/gdpr-supplement.d.ts +0 -3
  28. package/dist/templates/privacy/gdpr-supplement.d.ts.map +0 -1
  29. package/dist/templates/privacy/introduction.d.ts +0 -3
  30. package/dist/templates/privacy/introduction.d.ts.map +0 -1
  31. package/dist/templates/privacy/legal-basis.d.ts +0 -3
  32. package/dist/templates/privacy/legal-basis.d.ts.map +0 -1
  33. package/dist/templates/privacy/third-parties.d.ts +0 -3
  34. package/dist/templates/privacy/third-parties.d.ts.map +0 -1
  35. package/dist/templates/privacy/user-rights.d.ts +0 -3
  36. package/dist/templates/privacy/user-rights.d.ts.map +0 -1
  37. package/dist/templates/terms/acceptance.d.ts +0 -3
  38. package/dist/templates/terms/acceptance.d.ts.map +0 -1
  39. package/dist/templates/terms/accounts.d.ts +0 -3
  40. package/dist/templates/terms/accounts.d.ts.map +0 -1
  41. package/dist/templates/terms/availability.d.ts +0 -3
  42. package/dist/templates/terms/availability.d.ts.map +0 -1
  43. package/dist/templates/terms/changes-to-terms.d.ts +0 -3
  44. package/dist/templates/terms/changes-to-terms.d.ts.map +0 -1
  45. package/dist/templates/terms/contact.d.ts +0 -3
  46. package/dist/templates/terms/contact.d.ts.map +0 -1
  47. package/dist/templates/terms/disclaimers.d.ts +0 -3
  48. package/dist/templates/terms/disclaimers.d.ts.map +0 -1
  49. package/dist/templates/terms/dispute-resolution.d.ts +0 -3
  50. package/dist/templates/terms/dispute-resolution.d.ts.map +0 -1
  51. package/dist/templates/terms/eligibility.d.ts +0 -3
  52. package/dist/templates/terms/eligibility.d.ts.map +0 -1
  53. package/dist/templates/terms/governing-law.d.ts +0 -3
  54. package/dist/templates/terms/governing-law.d.ts.map +0 -1
  55. package/dist/templates/terms/indemnification.d.ts +0 -3
  56. package/dist/templates/terms/indemnification.d.ts.map +0 -1
  57. package/dist/templates/terms/intellectual-property.d.ts +0 -3
  58. package/dist/templates/terms/intellectual-property.d.ts.map +0 -1
  59. package/dist/templates/terms/introduction.d.ts +0 -3
  60. package/dist/templates/terms/introduction.d.ts.map +0 -1
  61. package/dist/templates/terms/limitation-of-liability.d.ts +0 -3
  62. package/dist/templates/terms/limitation-of-liability.d.ts.map +0 -1
  63. package/dist/templates/terms/payments.d.ts +0 -3
  64. package/dist/templates/terms/payments.d.ts.map +0 -1
  65. package/dist/templates/terms/prohibited-use.d.ts +0 -3
  66. package/dist/templates/terms/prohibited-use.d.ts.map +0 -1
  67. package/dist/templates/terms/termination.d.ts +0 -3
  68. package/dist/templates/terms/termination.d.ts.map +0 -1
  69. package/dist/templates/terms/third-party-services.d.ts +0 -3
  70. package/dist/templates/terms/third-party-services.d.ts.map +0 -1
  71. package/dist/templates/terms/user-content.d.ts +0 -3
  72. package/dist/templates/terms/user-content.d.ts.map +0 -1
  73. package/dist/terms.d.ts +0 -7
  74. package/dist/terms.d.ts.map +0 -1
  75. package/dist/terms.test.d.ts +0 -2
  76. package/dist/terms.test.d.ts.map +0 -1
  77. package/dist/types.d.ts +0 -119
  78. package/dist/types.d.ts.map +0 -1
  79. package/dist/validate-terms.d.ts +0 -3
  80. package/dist/validate-terms.d.ts.map +0 -1
  81. package/dist/validate-terms.test.d.ts +0 -2
  82. package/dist/validate-terms.test.d.ts.map +0 -1
  83. package/dist/validate.d.ts +0 -3
  84. package/dist/validate.d.ts.map +0 -1
package/README.md CHANGED
@@ -6,7 +6,7 @@ This is an internal package used by `@openpolicy/sdk`, `@openpolicy/vite`, and `
6
6
 
7
7
  ## What it does
8
8
 
9
- - Compiles `PrivacyPolicyConfig` and `TermsOfServiceConfig` definitions to Markdown and HTML
9
+ - Compiles `PrivacyPolicyConfig` and `TermsOfServiceConfig` definitions to Markdown, HTML, and PDF
10
10
  - Validates policy configs and returns structured warnings and errors
11
11
  - Exports section builders, renderers, and all core types
12
12
 
@@ -17,18 +17,19 @@ If you're building a custom integration (e.g. a framework plugin not covered by
17
17
  ```ts
18
18
  import { compilePolicy } from "@openpolicy/core";
19
19
 
20
- const results = compilePolicy(
20
+ const results = await compilePolicy(
21
21
  {
22
22
  type: "privacy",
23
23
  effectiveDate: "2026-01-01",
24
24
  company: { name: "Acme", legalName: "Acme, Inc.", address: "...", contact: "privacy@acme.com" },
25
25
  // ... rest of config
26
26
  },
27
- { formats: ["markdown", "html"] },
27
+ { formats: ["markdown", "html", "pdf"] },
28
28
  );
29
29
 
30
30
  for (const result of results) {
31
- console.log(result.format, result.content);
31
+ // result.content is string for markdown/html, Buffer for pdf
32
+ console.log(result.format, result.filename);
32
33
  }
33
34
  ```
34
35
 
package/dist/index.d.ts CHANGED
@@ -3,11 +3,6 @@ type OutputFormat = "markdown" | "html" | "pdf" | "jsx";
3
3
  type CompileOptions = {
4
4
  formats: OutputFormat[];
5
5
  };
6
- type PolicySection = {
7
- id: string;
8
- title: string;
9
- body: string;
10
- };
11
6
  type Jurisdiction = "us" | "eu" | "ca" | "au" | "nz" | "other";
12
7
  type CompanyConfig = {
13
8
  name: string;
@@ -149,26 +144,84 @@ type ValidationIssue = {
149
144
  message: string;
150
145
  };
151
146
  //#endregion
152
- //#region src/cookie.d.ts
153
- declare function compileCookiePolicy(config: CookiePolicyConfig, options?: CompileOptions): {
154
- format: OutputFormat;
155
- content: string;
156
- sections: PolicySection[];
157
- }[];
147
+ //#region src/documents/types.d.ts
148
+ type NodeContext = {
149
+ reason?: string;
150
+ };
151
+ type TextNode = {
152
+ type: "text";
153
+ value: string;
154
+ context?: NodeContext;
155
+ };
156
+ type BoldNode = {
157
+ type: "bold";
158
+ value: string;
159
+ context?: NodeContext;
160
+ };
161
+ type ItalicNode = {
162
+ type: "italic";
163
+ value: string;
164
+ context?: NodeContext;
165
+ };
166
+ type LinkNode = {
167
+ type: "link";
168
+ href: string;
169
+ value: string;
170
+ context?: NodeContext;
171
+ };
172
+ type InlineNode = TextNode | BoldNode | ItalicNode | LinkNode;
173
+ type HeadingNode = {
174
+ type: "heading";
175
+ level?: 1 | 2 | 3 | 4 | 5 | 6;
176
+ value: string;
177
+ context?: NodeContext;
178
+ };
179
+ type ParagraphNode = {
180
+ type: "paragraph";
181
+ children: InlineNode[];
182
+ context?: NodeContext;
183
+ };
184
+ type ListItemNode = {
185
+ type: "listItem";
186
+ children: (InlineNode | ListNode)[];
187
+ context?: NodeContext;
188
+ };
189
+ type ListNode = {
190
+ type: "list";
191
+ ordered?: boolean;
192
+ items: ListItemNode[];
193
+ context?: NodeContext;
194
+ };
195
+ type ContentNode = HeadingNode | ParagraphNode | ListNode;
196
+ type DocumentSection = {
197
+ type: "section";
198
+ id: string;
199
+ content: ContentNode[];
200
+ context?: NodeContext;
201
+ };
202
+ type PolicyType = "privacy" | "terms" | "cookie";
203
+ type Document = {
204
+ type: "document";
205
+ policyType: PolicyType;
206
+ sections: DocumentSection[];
207
+ context?: NodeContext;
208
+ };
209
+ type Node = Document | DocumentSection | ContentNode | ListItemNode | InlineNode;
158
210
  //#endregion
159
- //#region src/privacy.d.ts
160
- declare function compilePrivacyPolicy(config: PrivacyPolicyConfig, options?: CompileOptions): {
161
- format: OutputFormat;
162
- content: string;
163
- sections: PolicySection[];
164
- }[];
211
+ //#region src/documents/helpers.d.ts
212
+ declare const heading: (value: string, levelOrContext?: (1 | 2 | 3 | 4 | 5 | 6) | NodeContext, context?: NodeContext) => HeadingNode;
213
+ declare const text: (value: string, context?: NodeContext) => TextNode;
214
+ declare const bold: (value: string, context?: NodeContext) => BoldNode;
215
+ declare const italic: (value: string, context?: NodeContext) => ItalicNode;
216
+ declare const link: (href: string, value: string, context?: NodeContext) => LinkNode;
217
+ declare const p: (children: (string | InlineNode)[], context?: NodeContext) => ParagraphNode;
218
+ declare const li: (children: (string | InlineNode | ListNode)[], context?: NodeContext) => ListItemNode;
219
+ declare const ul: (items: ListItemNode[], context?: NodeContext) => ListNode;
220
+ declare const ol: (items: ListItemNode[], context?: NodeContext) => ListNode;
221
+ declare const section: (id: string, content: ContentNode[], context?: NodeContext) => DocumentSection;
165
222
  //#endregion
166
- //#region src/terms.d.ts
167
- declare function compileTermsOfService(config: TermsOfServiceConfig, options?: CompileOptions): {
168
- format: OutputFormat;
169
- content: string;
170
- sections: PolicySection[];
171
- }[];
223
+ //#region src/documents/index.d.ts
224
+ declare function compile(input: PolicyInput): Document;
172
225
  //#endregion
173
226
  //#region src/validate.d.ts
174
227
  declare function validatePrivacyPolicy(config: PrivacyPolicyConfig): ValidationIssue[];
@@ -181,11 +234,6 @@ declare function validateTermsOfService(config: TermsOfServiceConfig): Validatio
181
234
  //#endregion
182
235
  //#region src/index.d.ts
183
236
  declare function expandOpenPolicyConfig(config: OpenPolicyConfig): PolicyInput[];
184
- declare function compilePolicy(input: PolicyInput, options?: CompileOptions): {
185
- format: OutputFormat;
186
- content: string;
187
- sections: PolicySection[];
188
- }[];
189
237
  //#endregion
190
- export { type CompanyConfig, type CompileOptions, type CookiePolicyConfig, type DisputeResolutionMethod, type Jurisdiction, type OpenPolicyConfig, type OutputFormat, type PolicyInput, type PolicySection, type PrivacyPolicyConfig, type TermsOfServiceConfig, type ValidationIssue, compileCookiePolicy, compilePolicy, compilePrivacyPolicy, compileTermsOfService, expandOpenPolicyConfig, isOpenPolicyConfig, validateCookiePolicy, validatePrivacyPolicy, validateTermsOfService };
238
+ export { type BoldNode, type CompanyConfig, type CompileOptions, type ContentNode, type CookiePolicyConfig, type DisputeResolutionMethod, type Document, type DocumentSection, type HeadingNode, type InlineNode, type ItalicNode, type Jurisdiction, type LinkNode, type ListItemNode, type ListNode, type Node, type NodeContext, type OpenPolicyConfig, type OutputFormat, type ParagraphNode, type PolicyInput, type PolicyType, type PrivacyPolicyConfig, type TermsOfServiceConfig, type TextNode, type ValidationIssue, bold, compile, expandOpenPolicyConfig, heading, isOpenPolicyConfig, italic, li, link, ol, p, section, text, ul, validateCookiePolicy, validatePrivacyPolicy, validateTermsOfService };
191
239
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/cookie.ts","../src/privacy.ts","../src/terms.ts","../src/validate.ts","../src/validate-cookie.ts","../src/validate-terms.ts","../src/index.ts"],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/documents/types.ts","../src/documents/helpers.ts","../src/documents/index.ts","../src/validate.ts","../src/validate-cookie.ts","../src/validate-terms.ts","../src/index.ts"],"mappings":"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"}