digital-products 2.1.1 → 2.3.0

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 (80) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +2 -0
  3. package/dist/api.js +7 -7
  4. package/dist/api.js.map +1 -1
  5. package/dist/app.js +6 -6
  6. package/dist/app.js.map +1 -1
  7. package/dist/client.d.ts +157 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +69 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/content.js +7 -7
  12. package/dist/content.js.map +1 -1
  13. package/dist/data.d.ts.map +1 -1
  14. package/dist/data.js +6 -6
  15. package/dist/data.js.map +1 -1
  16. package/dist/dataset.js +5 -5
  17. package/dist/dataset.js.map +1 -1
  18. package/dist/index.d.ts +92 -13
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +139 -15
  21. package/dist/index.js.map +1 -1
  22. package/dist/mcp.d.ts +1 -1
  23. package/dist/mcp.d.ts.map +1 -1
  24. package/dist/mcp.js +17 -10
  25. package/dist/mcp.js.map +1 -1
  26. package/dist/product.js +2 -2
  27. package/dist/product.js.map +1 -1
  28. package/dist/sdk.d.ts.map +1 -1
  29. package/dist/sdk.js +52 -16
  30. package/dist/sdk.js.map +1 -1
  31. package/dist/site.d.ts.map +1 -1
  32. package/dist/site.js +12 -8
  33. package/dist/site.js.map +1 -1
  34. package/dist/types.d.ts +830 -12
  35. package/dist/types.d.ts.map +1 -1
  36. package/dist/types.js +495 -2
  37. package/dist/types.js.map +1 -1
  38. package/dist/worker.d.ts +205 -0
  39. package/dist/worker.d.ts.map +1 -0
  40. package/dist/worker.js +356 -0
  41. package/dist/worker.js.map +1 -0
  42. package/package.json +20 -4
  43. package/src/api.ts +7 -7
  44. package/src/app.ts +6 -6
  45. package/src/client.ts +192 -0
  46. package/src/content.ts +7 -7
  47. package/src/data.ts +12 -7
  48. package/src/dataset.ts +5 -5
  49. package/src/index.ts +151 -15
  50. package/src/mcp.ts +18 -11
  51. package/src/product.ts +2 -2
  52. package/src/sdk.ts +54 -15
  53. package/src/site.ts +12 -8
  54. package/src/types.ts +821 -12
  55. package/src/worker.ts +525 -0
  56. package/test/product.test.ts +53 -198
  57. package/test/unified-types.test.ts +589 -0
  58. package/test/worker.test.ts +912 -0
  59. package/vitest.config.ts +42 -0
  60. package/wrangler.jsonc +36 -0
  61. package/.turbo/turbo-build.log +0 -5
  62. package/src/api.js +0 -128
  63. package/src/app.js +0 -106
  64. package/src/content.js +0 -77
  65. package/src/data.js +0 -106
  66. package/src/dataset.js +0 -49
  67. package/src/entities/ai.js +0 -858
  68. package/src/entities/content.js +0 -783
  69. package/src/entities/index.js +0 -88
  70. package/src/entities/interfaces.js +0 -929
  71. package/src/entities/lifecycle.js +0 -803
  72. package/src/entities/products.js +0 -797
  73. package/src/entities/web.js +0 -657
  74. package/src/index.js +0 -35
  75. package/src/mcp.js +0 -139
  76. package/src/product.js +0 -53
  77. package/src/registry.js +0 -31
  78. package/src/sdk.js +0 -127
  79. package/src/site.js +0 -112
  80. package/src/types.js +0 -4
package/CHANGELOG.md CHANGED
@@ -1,5 +1,22 @@
1
1
  # digital-products
2
2
 
3
+ ## 2.3.0
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [9e2779a]
8
+ - Updated dependencies [b7c7c57]
9
+ - ai-functions@2.3.0
10
+ - ai-database@2.3.0
11
+
12
+ ## 2.1.3
13
+
14
+ ### Patch Changes
15
+
16
+ - Updated dependencies
17
+ - ai-functions@2.1.3
18
+ - ai-database@2.1.3
19
+
3
20
  ## 2.1.1
4
21
 
5
22
  ### Patch Changes
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # digital-products
2
2
 
3
+ ![Stability: Experimental](https://img.shields.io/badge/stability-experimental-red)
4
+
3
5
  Primitives for defining and building digital products.
4
6
 
5
7
  ## Overview
package/dist/api.js CHANGED
@@ -52,15 +52,15 @@ export function API(config) {
52
52
  description: config.description,
53
53
  version: config.version,
54
54
  style: config.style || 'rest',
55
- baseUrl: config.baseUrl,
56
55
  endpoints: config.endpoints || [],
57
- auth: config.auth,
58
- rateLimit: config.rateLimit,
59
- docsUrl: config.docsUrl,
60
- openapi: config.openapi,
61
- metadata: config.metadata,
62
- tags: config.tags,
63
56
  status: config.status || 'active',
57
+ ...(config.baseUrl !== undefined && { baseUrl: config.baseUrl }),
58
+ ...(config.auth !== undefined && { auth: config.auth }),
59
+ ...(config.rateLimit !== undefined && { rateLimit: config.rateLimit }),
60
+ ...(config.docsUrl !== undefined && { docsUrl: config.docsUrl }),
61
+ ...(config.openapi !== undefined && { openapi: config.openapi }),
62
+ ...(config.metadata !== undefined && { metadata: config.metadata }),
63
+ ...(config.tags !== undefined && { tags: config.tags }),
64
64
  };
65
65
  return registerProduct(api);
66
66
  }
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,GAAG,CAAC,MAAmC;IACrD,MAAM,GAAG,GAAkB;QACzB,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM;QAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;KAClC,CAAA;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAoC,EACpC,IAAY,EACZ,WAAmB,EACnB,OAAqE;IAErE,OAAO;QACL,MAAM;QACN,IAAI;QACJ,WAAW;QACX,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAqB;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,MAAuB;IAC/C,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,MAAM,UAAU,GAAG,CAAC,MAAmC;IACrD,MAAM,GAAG,GAAkB;QACzB,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,MAAM;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,EAAE;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,IAAI,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC;QACtE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KACxD,CAAA;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,QAAQ,CACtB,MAAoC,EACpC,IAAY,EACZ,WAAmB,EACnB,OAAqE;IAErE,OAAO;QACL,MAAM;QACN,IAAI;QACJ,WAAW;QACX,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAqB;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,SAAS,CAAC,MAAuB;IAC/C,OAAO,MAAM,CAAA;AACf,CAAC"}
package/dist/app.js CHANGED
@@ -41,13 +41,13 @@ export function App(config) {
41
41
  version: config.version,
42
42
  framework: config.framework || 'react',
43
43
  routes: config.routes || [],
44
- config: config.config,
45
- state: config.state,
46
- auth: config.auth,
47
- deployments: config.deployments,
48
- metadata: config.metadata,
49
- tags: config.tags,
50
44
  status: config.status || 'active',
45
+ ...(config.config !== undefined && { config: config.config }),
46
+ ...(config.state !== undefined && { state: config.state }),
47
+ ...(config.auth !== undefined && { auth: config.auth }),
48
+ ...(config.deployments !== undefined && { deployments: config.deployments }),
49
+ ...(config.metadata !== undefined && { metadata: config.metadata }),
50
+ ...(config.tags !== undefined && { tags: config.tags }),
51
51
  };
52
52
  return registerProduct(app);
53
53
  }
package/dist/app.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,GAAG,CAAC,MAAmC;IACrD,MAAM,GAAG,GAAkB;QACzB,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;KAClC,CAAA;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,SAAiB,EACjB,OAAqD;IAErD,OAAO;QACL,IAAI;QACJ,SAAS;QACT,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,MAAuB;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAC,MAAkB;IACrC,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,GAAG,CAAC,MAAmC;IACrD,MAAM,GAAG,GAAkB;QACzB,IAAI,EAAE,KAAK;QACX,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,OAAO;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;QAC3B,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KACxD,CAAA;IAED,OAAO,eAAe,CAAC,GAAG,CAAC,CAAA;AAC7B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,SAAiB,EACjB,OAAqD;IAErD,OAAO;QACL,IAAI;QACJ,SAAS;QACT,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,KAAK,CAAC,MAAuB;IAC3C,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,IAAI,CAAC,MAAkB;IACrC,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * RPC Client for Digital Products
3
+ *
4
+ * Provides a typed RPC client that connects to the deployed
5
+ * digital-products worker using rpc.do for remote procedure calls.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { createDigitalProductsClient } from 'digital-products/client'
10
+ *
11
+ * const client = createDigitalProductsClient('https://digital-products.workers.dev')
12
+ * const product = await client.create({ name: 'My Product', description: 'A great product', version: '1.0.0' })
13
+ * const feature = await client.addFeature(product.id, { name: 'Search', description: 'Full-text search' })
14
+ * ```
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ interface ProductData {
19
+ id: string;
20
+ name: string;
21
+ description: string;
22
+ version: string;
23
+ status: 'draft' | 'active' | 'deprecated' | 'archived';
24
+ type?: string;
25
+ features?: FeatureData[];
26
+ metadata?: Record<string, unknown>;
27
+ tags?: string[];
28
+ createdAt: Date;
29
+ updatedAt: Date;
30
+ }
31
+ interface FeatureData {
32
+ id: string;
33
+ name: string;
34
+ description: string;
35
+ status: 'draft' | 'beta' | 'ga' | 'deprecated';
36
+ productId: string;
37
+ metadata?: Record<string, unknown>;
38
+ createdAt: Date;
39
+ updatedAt: Date;
40
+ }
41
+ interface VersionData {
42
+ id: string;
43
+ productId: string;
44
+ version: string;
45
+ changelog?: string;
46
+ status: 'draft' | 'published' | 'deprecated';
47
+ features?: string[];
48
+ metadata?: Record<string, unknown>;
49
+ createdAt: Date;
50
+ publishedAt?: Date;
51
+ }
52
+ interface BundleData {
53
+ id: string;
54
+ name: string;
55
+ description: string;
56
+ productIds: string[];
57
+ pricing?: PricingData;
58
+ metadata?: Record<string, unknown>;
59
+ createdAt: Date;
60
+ updatedAt: Date;
61
+ }
62
+ interface PricingData {
63
+ model: 'free' | 'one-time' | 'subscription' | 'usage-based';
64
+ amount?: number;
65
+ currency?: string;
66
+ interval?: 'month' | 'year';
67
+ }
68
+ interface ListOptions {
69
+ limit?: number;
70
+ offset?: number;
71
+ status?: string;
72
+ type?: string;
73
+ orderBy?: string;
74
+ order?: 'asc' | 'desc';
75
+ }
76
+ /**
77
+ * DigitalProductsAPI - Type-safe interface matching ProductServiceCore RPC methods
78
+ *
79
+ * This interface mirrors all public methods on ProductServiceCore so that
80
+ * the RPC client provides full type safety when calling remote methods.
81
+ */
82
+ export interface DigitalProductsAPI {
83
+ create(data: Partial<ProductData>): Promise<ProductData>;
84
+ get(id: string): Promise<ProductData | null>;
85
+ update(id: string, data: Partial<ProductData>): Promise<ProductData>;
86
+ delete(id: string): Promise<boolean>;
87
+ list(options?: ListOptions): Promise<ProductData[]>;
88
+ addFeature(productId: string, featureData: Partial<FeatureData>): Promise<FeatureData>;
89
+ updateFeature(featureId: string, data: Partial<FeatureData>): Promise<FeatureData>;
90
+ removeFeature(featureId: string): Promise<boolean>;
91
+ listFeatures(productId: string): Promise<FeatureData[]>;
92
+ publish(productId: string, versionStr: string, changelog?: string): Promise<VersionData>;
93
+ listVersions(productId: string): Promise<VersionData[]>;
94
+ getVersion(productId: string, versionStr: string): Promise<VersionData | null>;
95
+ deprecateVersion(productId: string, versionStr: string): Promise<VersionData>;
96
+ compose(name: string, productIds: string[], options?: Partial<BundleData>): Promise<BundleData>;
97
+ getBundle(bundleId: string): Promise<BundleData | null>;
98
+ updateBundle(bundleId: string, data: Partial<BundleData>): Promise<BundleData>;
99
+ listBundles(): Promise<BundleData[]>;
100
+ }
101
+ /**
102
+ * Options for creating a digital products RPC client
103
+ */
104
+ export interface DigitalProductsClientOptions {
105
+ /** Authentication token or API key */
106
+ token?: string;
107
+ /** Request timeout in milliseconds */
108
+ timeout?: number;
109
+ /** Custom headers to include in requests */
110
+ headers?: Record<string, string>;
111
+ }
112
+ /**
113
+ * Create a typed RPC client for the digital-products worker
114
+ *
115
+ * @param url - The URL of the deployed digital-products worker
116
+ * @param options - Optional client configuration
117
+ * @returns A typed RPC client with all ProductServiceCore methods
118
+ *
119
+ * @example
120
+ * ```ts
121
+ * import { createDigitalProductsClient } from 'digital-products/client'
122
+ *
123
+ * // Connect to production
124
+ * const client = createDigitalProductsClient('https://digital-products.workers.dev')
125
+ *
126
+ * // Create a product
127
+ * const product = await client.create({
128
+ * name: 'My API',
129
+ * description: 'A powerful API service',
130
+ * version: '1.0.0',
131
+ * })
132
+ *
133
+ * // Add features
134
+ * await client.addFeature(product.id, { name: 'Rate Limiting', description: 'API rate limiting' })
135
+ * await client.addFeature(product.id, { name: 'Analytics', description: 'Usage analytics' })
136
+ *
137
+ * // Publish a version
138
+ * await client.publish(product.id, '1.0.0', 'Initial release')
139
+ *
140
+ * // Create a bundle
141
+ * const bundle = await client.compose('Enterprise Bundle', [product.id, otherProduct.id])
142
+ * ```
143
+ */
144
+ export declare function createDigitalProductsClient(url?: string, options?: DigitalProductsClientOptions): import("rpc.do").RPCProxy<DigitalProductsAPI>;
145
+ /**
146
+ * Default client instance connected to the production digital-products worker
147
+ *
148
+ * @example
149
+ * ```ts
150
+ * import client from 'digital-products/client'
151
+ *
152
+ * const product = await client.create({ name: 'My Product', description: 'Great', version: '1.0.0' })
153
+ * ```
154
+ */
155
+ declare const client: import("rpc.do").RPCProxy<DigitalProductsAPI>;
156
+ export default client;
157
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js ADDED
@@ -0,0 +1,69 @@
1
+ /**
2
+ * RPC Client for Digital Products
3
+ *
4
+ * Provides a typed RPC client that connects to the deployed
5
+ * digital-products worker using rpc.do for remote procedure calls.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * import { createDigitalProductsClient } from 'digital-products/client'
10
+ *
11
+ * const client = createDigitalProductsClient('https://digital-products.workers.dev')
12
+ * const product = await client.create({ name: 'My Product', description: 'A great product', version: '1.0.0' })
13
+ * const feature = await client.addFeature(product.id, { name: 'Search', description: 'Full-text search' })
14
+ * ```
15
+ *
16
+ * @packageDocumentation
17
+ */
18
+ import { RPC, http } from 'rpc.do';
19
+ // ==================== Client Factory ====================
20
+ /** Default URL for the digital-products worker */
21
+ const DEFAULT_URL = 'https://digital-products.workers.dev';
22
+ /**
23
+ * Create a typed RPC client for the digital-products worker
24
+ *
25
+ * @param url - The URL of the deployed digital-products worker
26
+ * @param options - Optional client configuration
27
+ * @returns A typed RPC client with all ProductServiceCore methods
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * import { createDigitalProductsClient } from 'digital-products/client'
32
+ *
33
+ * // Connect to production
34
+ * const client = createDigitalProductsClient('https://digital-products.workers.dev')
35
+ *
36
+ * // Create a product
37
+ * const product = await client.create({
38
+ * name: 'My API',
39
+ * description: 'A powerful API service',
40
+ * version: '1.0.0',
41
+ * })
42
+ *
43
+ * // Add features
44
+ * await client.addFeature(product.id, { name: 'Rate Limiting', description: 'API rate limiting' })
45
+ * await client.addFeature(product.id, { name: 'Analytics', description: 'Usage analytics' })
46
+ *
47
+ * // Publish a version
48
+ * await client.publish(product.id, '1.0.0', 'Initial release')
49
+ *
50
+ * // Create a bundle
51
+ * const bundle = await client.compose('Enterprise Bundle', [product.id, otherProduct.id])
52
+ * ```
53
+ */
54
+ export function createDigitalProductsClient(url = DEFAULT_URL, options) {
55
+ return RPC(http(url, options?.token));
56
+ }
57
+ /**
58
+ * Default client instance connected to the production digital-products worker
59
+ *
60
+ * @example
61
+ * ```ts
62
+ * import client from 'digital-products/client'
63
+ *
64
+ * const product = await client.create({ name: 'My Product', description: 'Great', version: '1.0.0' })
65
+ * ```
66
+ */
67
+ const client = createDigitalProductsClient();
68
+ export default client;
69
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAqHlC,2DAA2D;AAE3D,kDAAkD;AAClD,MAAM,WAAW,GAAG,sCAAsC,CAAA;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,MAAM,UAAU,2BAA2B,CACzC,MAAc,WAAW,EACzB,OAAsC;IAEtC,OAAO,GAAG,CAAqB,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,2BAA2B,EAAE,CAAA;AAE5C,eAAe,MAAM,CAAA"}
package/dist/content.js CHANGED
@@ -41,14 +41,14 @@ export function Content(config) {
41
41
  description: config.description,
42
42
  version: config.version,
43
43
  format: config.format || 'markdown',
44
- source: config.source,
45
- schema: config.schema,
46
- frontmatter: config.frontmatter,
47
- categories: config.categories,
48
- workflow: config.workflow,
49
- metadata: config.metadata,
50
- tags: config.tags,
51
44
  status: config.status || 'active',
45
+ ...(config.source !== undefined && { source: config.source }),
46
+ ...(config.schema !== undefined && { schema: config.schema }),
47
+ ...(config.frontmatter !== undefined && { frontmatter: config.frontmatter }),
48
+ ...(config.categories !== undefined && { categories: config.categories }),
49
+ ...(config.workflow !== undefined && { workflow: config.workflow }),
50
+ ...(config.metadata !== undefined && { metadata: config.metadata }),
51
+ ...(config.tags !== undefined && { tags: config.tags }),
52
52
  };
53
53
  return registerProduct(content);
54
54
  }
@@ -1 +1 @@
1
- {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,OAAO,CAAC,MAAuC;IAC7D,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;KAClC,CAAA;IAED,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA0B;IACjD,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"content.js","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,MAAM,UAAU,OAAO,CAAC,MAAuC;IAC7D,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,UAAU;QACnC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,IAAI,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;QAC5E,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QACzE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KACxD,CAAA;IAED,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,QAAQ,CAAC,MAA0B;IACjD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,eAAe,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAIzG;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAkBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,GACjD,eAAe,CAMjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAOxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CAWhB"}
1
+ {"version":3,"file":"data.d.ts","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,sBAAsB,EACtB,cAAc,EACf,MAAM,YAAY,CAAA;AAInB;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,GAAG,cAAc,CAkBzE;AAED;;;;;;;;;GASG;AACH,wBAAgB,KAAK,CACnB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,EAChB,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,MAAM,GAAG,QAAQ,CAAC,GACjD,eAAe,CAMjB;AAED;;;;;;;;GAQG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,sBAAsB,CAAC,MAAM,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,GACZ,sBAAsB,CAOxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,QAAQ,CACtB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,cAAc,CAAC,MAAM,CAAC,EAC5B,eAAe,CAAC,EAAE,OAAO,GAAG,MAAM,EAClC,OAAO,CAAC,EAAE,MAAM,GACf,cAAc,CAWhB"}
package/dist/data.js CHANGED
@@ -40,12 +40,12 @@ export function Data(config) {
40
40
  version: config.version,
41
41
  schema: config.schema,
42
42
  provider: config.provider || 'fs',
43
- indexes: config.indexes,
44
- relationships: config.relationships,
45
- validation: config.validation,
46
- metadata: config.metadata,
47
- tags: config.tags,
48
43
  status: config.status || 'active',
44
+ ...(config.indexes !== undefined && { indexes: config.indexes }),
45
+ ...(config.relationships !== undefined && { relationships: config.relationships }),
46
+ ...(config.validation !== undefined && { validation: config.validation }),
47
+ ...(config.metadata !== undefined && { metadata: config.metadata }),
48
+ ...(config.tags !== undefined && { tags: config.tags }),
49
49
  };
50
50
  return registerProduct(data);
51
51
  }
@@ -101,7 +101,7 @@ export function Validate(field, rule, paramsOrMessage, message) {
101
101
  field,
102
102
  rule,
103
103
  params: paramsOrMessage,
104
- message,
104
+ ...(message !== undefined && { message }),
105
105
  };
106
106
  }
107
107
  //# sourceMappingURL=data.js.map
package/dist/data.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,IAAI,CAAC,MAAoC;IACvD,MAAM,IAAI,GAAmB;QAC3B,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;KAClC,CAAA;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,MAAgB,EAChB,OAAkD;IAElD,OAAO;QACL,IAAI;QACJ,MAAM;QACN,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAoC,EACpC,IAAY,EACZ,EAAU,EACV,KAAa;IAEb,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,EAAE;QACF,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAa,EACb,IAA4B,EAC5B,eAAkC,EAClC,OAAgB;IAEhB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAA;IAClD,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,eAAe;QACvB,OAAO;KACR,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"data.js","sourceRoot":"","sources":["../src/data.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,IAAI,CAAC,MAAoC;IACvD,MAAM,IAAI,GAAmB;QAC3B,IAAI,EAAE,MAAM;QACZ,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,IAAI;QACjC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,EAAE,aAAa,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC;QAClF,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;QACzE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KACxD,CAAA;IAED,OAAO,eAAe,CAAC,IAAI,CAAC,CAAA;AAC9B,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,KAAK,CACnB,IAAY,EACZ,MAAgB,EAChB,OAAkD;IAElD,OAAO;QACL,IAAI;QACJ,MAAM;QACN,GAAG,OAAO;KACX,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAoC,EACpC,IAAY,EACZ,EAAU,EACV,KAAa;IAEb,OAAO;QACL,IAAI;QACJ,IAAI;QACJ,EAAE;QACF,KAAK;KACN,CAAA;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,QAAQ,CACtB,KAAa,EACb,IAA4B,EAC5B,eAAkC,EAClC,OAAgB;IAEhB,IAAI,OAAO,eAAe,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAA;IAClD,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI;QACJ,MAAM,EAAE,eAAe;QACvB,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,CAAC;KAC1C,CAAA;AACH,CAAC"}
package/dist/dataset.js CHANGED
@@ -37,13 +37,13 @@ export function Dataset(config) {
37
37
  version: config.version,
38
38
  format: config.format || 'json',
39
39
  schema: config.schema,
40
- source: config.source,
41
- size: config.size,
42
- license: config.license,
43
40
  updateFrequency: config.updateFrequency || 'static',
44
- metadata: config.metadata,
45
- tags: config.tags,
46
41
  status: config.status || 'active',
42
+ ...(config.source !== undefined && { source: config.source }),
43
+ ...(config.size !== undefined && { size: config.size }),
44
+ ...(config.license !== undefined && { license: config.license }),
45
+ ...(config.metadata !== undefined && { metadata: config.metadata }),
46
+ ...(config.tags !== undefined && { tags: config.tags }),
47
47
  };
48
48
  return registerProduct(dataset);
49
49
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAuC;IAC7D,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,QAAQ;QACnD,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;KAClC,CAAA;IAED,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC"}
1
+ {"version":3,"file":"dataset.js","sourceRoot":"","sources":["../src/dataset.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9C;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,OAAO,CAAC,MAAuC;IAC7D,MAAM,OAAO,GAAsB;QACjC,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM;QAC/B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,eAAe,EAAE,MAAM,CAAC,eAAe,IAAI,QAAQ;QACnD,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,QAAQ;QACjC,GAAG,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC7D,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;QAChE,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;QACnE,GAAG,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;KACxD,CAAA;IAED,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,29 +1,108 @@
1
1
  /**
2
2
  * digital-products - Primitives for defining and building digital products
3
3
  *
4
- * This package provides primitives for defining digital products:
5
- * - Apps: Interactive user-facing applications
6
- * - APIs: Programmatic interfaces
7
- * - Content: Text/media content with schemas
8
- * - Data: Structured data definitions
9
- * - Datasets: Curated data collections
10
- * - Sites: Websites and documentation
11
- * - MCPs: Model Context Protocol servers
12
- * - SDKs: Software development kits
4
+ * This package provides primitives for defining digital products using JSON-LD
5
+ * style conventions with `$id` and `$type` fields for schema.org.ai compatibility.
6
+ *
7
+ * ## Product Types
8
+ *
9
+ * - {@link Product} - Base product interface
10
+ * - {@link App} - Interactive user-facing applications (web, mobile, desktop)
11
+ * - {@link API} - Programmatic interfaces with versioning and auth
12
+ * - {@link Site} - Websites (marketing, docs, blog)
13
+ * - {@link Service} - Backend services with endpoints
14
+ * - {@link Feature} - Product features with lifecycle status
15
+ *
16
+ * ## Validation & Type Guards
17
+ *
18
+ * Each product type includes:
19
+ * - Zod schema for runtime validation (e.g., {@link AppSchema})
20
+ * - Type guard function (e.g., {@link isApp})
21
+ * - Factory function with defaults (e.g., {@link createApp})
22
+ *
23
+ * ## Builder Pattern (Legacy)
24
+ *
25
+ * The `*Builder` functions and `*Definition` types are maintained for
26
+ * backwards compatibility. New code should use the unified JSON-LD types.
13
27
  *
14
28
  * @packageDocumentation
29
+ *
30
+ * @example Creating an App
31
+ * ```typescript
32
+ * import { createApp, isApp, AppSchema, App } from 'digital-products'
33
+ *
34
+ * // Using factory function (recommended)
35
+ * const app = createApp({
36
+ * $id: 'https://schema.org.ai/apps/dashboard',
37
+ * name: 'Dashboard',
38
+ * description: 'Admin dashboard application',
39
+ * platform: 'web',
40
+ * url: 'https://dashboard.example.com'
41
+ * })
42
+ * // app.$type === 'https://schema.org.ai/App'
43
+ * // app.status === 'active' (default)
44
+ *
45
+ * // Type guard
46
+ * if (isApp(data)) {
47
+ * console.log(data.platform) // TypeScript knows this is App
48
+ * }
49
+ *
50
+ * // Zod validation
51
+ * const result = AppSchema.safeParse(untrustedData)
52
+ * if (result.success) {
53
+ * console.log(result.data.name)
54
+ * }
55
+ * ```
56
+ *
57
+ * @example Creating an API
58
+ * ```typescript
59
+ * import { createAPI, API, APISchema } from 'digital-products'
60
+ *
61
+ * const api = createAPI({
62
+ * $id: 'https://schema.org.ai/apis/users',
63
+ * name: 'Users API',
64
+ * description: 'User management REST API',
65
+ * baseUrl: 'https://api.example.com/v1',
66
+ * version: '1.0.0',
67
+ * authentication: 'bearer'
68
+ * })
69
+ * // api.$type === 'https://schema.org.ai/API'
70
+ * ```
71
+ *
72
+ * @example Creating a Site
73
+ * ```typescript
74
+ * import { createSite, Site, SiteSchema } from 'digital-products'
75
+ *
76
+ * const site = createSite({
77
+ * $id: 'https://schema.org.ai/sites/docs',
78
+ * name: 'Documentation',
79
+ * description: 'Product documentation site',
80
+ * url: 'https://docs.example.com',
81
+ * siteType: 'docs'
82
+ * })
83
+ * // site.$type === 'https://schema.org.ai/Site'
84
+ * ```
15
85
  */
16
86
  export * from './types.js';
17
87
  export * as Nouns from './entities/index.js';
18
88
  export { AllDigitalProductEntities, DigitalProductEntityCategories, Entities, ProductEntities, ProductCategories, InterfaceEntities, InterfaceCategories, ContentEntities, ContentCategories, WebEntities, WebCategories, AIEntities, AICategories, LifecycleEntities, LifecycleCategories, } from './entities/index.js';
19
89
  export { registry } from './registry.js';
20
- export { Product, createProduct, registerProduct } from './product.js';
21
- export { App, Route, State, Auth } from './app.js';
22
- export { API, Endpoint, APIAuth, RateLimit } from './api.js';
90
+ /** @deprecated Use createProduct() from unified types instead */
91
+ export { Product as ProductBuilder, createProduct as createProductDefinition, registerProduct, } from './product.js';
92
+ /** @deprecated Use createApp() from unified types instead */
93
+ export { App as AppBuilder, Route, State, Auth } from './app.js';
94
+ /** @deprecated Use createAPI() from unified types instead */
95
+ export { API as APIBuilder, Endpoint, APIAuth, RateLimit } from './api.js';
23
96
  export { Content, Workflow } from './content.js';
24
97
  export { Data, Index, Relationship, Validate } from './data.js';
25
98
  export { Dataset } from './dataset.js';
26
- export { Site, Nav, SEO, Analytics } from './site.js';
99
+ /** @deprecated Use createSite() from unified types instead */
100
+ export { Site as SiteBuilder, Nav, SEO, Analytics } from './site.js';
27
101
  export { MCP, Tool, Resource, Prompt, MCPConfig } from './mcp.js';
28
102
  export { SDK, Export, Example } from './sdk.js';
103
+ import { Product as ProductFn } from './product.js';
104
+ import { App as AppFn } from './app.js';
105
+ import { API as APIFn } from './api.js';
106
+ import { Site as SiteFn } from './site.js';
107
+ export { ProductFn as Product, AppFn as App, APIFn as API, SiteFn as Site };
29
108
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,cAAc,YAAY,CAAA;AAG1B,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAG5C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,QAAQ,EAER,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAGxC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AACtE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAClD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAC5D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrD,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoFG;AA4BH,cAAc,YAAY,CAAA;AAG1B,OAAO,KAAK,KAAK,MAAM,qBAAqB,CAAA;AAG5C,OAAO,EACL,yBAAyB,EACzB,8BAA8B,EAC9B,QAAQ,EAER,eAAe,EACf,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,YAAY,EACZ,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,qBAAqB,CAAA;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAkBxC,iEAAiE;AACjE,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,aAAa,IAAI,uBAAuB,EACxC,eAAe,GAChB,MAAM,cAAc,CAAA;AAErB,6DAA6D;AAC7D,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,UAAU,CAAA;AAEhE,6DAA6D;AAC7D,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAE1E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAA;AAC/D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,8DAA8D;AAC9D,OAAO,EAAE,IAAI,IAAI,WAAW,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AAEpE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACjE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAM/C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,cAAc,CAAA;AACnD,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,GAAG,IAAI,KAAK,EAAE,MAAM,UAAU,CAAA;AACvC,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,WAAW,CAAA;AAI1C,OAAO,EAAE,SAAS,IAAI,OAAO,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,MAAM,IAAI,IAAI,EAAE,CAAA"}