digital-products 2.0.1
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/.turbo/turbo-build.log +5 -0
- package/CHANGELOG.md +9 -0
- package/README.md +535 -0
- package/dist/api.d.ts +99 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +129 -0
- package/dist/api.js.map +1 -0
- package/dist/app.d.ts +79 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +107 -0
- package/dist/app.js.map +1 -0
- package/dist/content.d.ts +58 -0
- package/dist/content.d.ts.map +1 -0
- package/dist/content.js +78 -0
- package/dist/content.js.map +1 -0
- package/dist/data.d.ts +67 -0
- package/dist/data.d.ts.map +1 -0
- package/dist/data.js +107 -0
- package/dist/data.js.map +1 -0
- package/dist/dataset.d.ts +32 -0
- package/dist/dataset.d.ts.map +1 -0
- package/dist/dataset.js +50 -0
- package/dist/dataset.js.map +1 -0
- package/dist/entities/ai.d.ts +53 -0
- package/dist/entities/ai.d.ts.map +1 -0
- package/dist/entities/ai.js +859 -0
- package/dist/entities/ai.js.map +1 -0
- package/dist/entities/content.d.ts +52 -0
- package/dist/entities/content.d.ts.map +1 -0
- package/dist/entities/content.js +784 -0
- package/dist/entities/content.js.map +1 -0
- package/dist/entities/index.d.ts +112 -0
- package/dist/entities/index.d.ts.map +1 -0
- package/dist/entities/index.js +89 -0
- package/dist/entities/index.js.map +1 -0
- package/dist/entities/interfaces.d.ts +67 -0
- package/dist/entities/interfaces.d.ts.map +1 -0
- package/dist/entities/interfaces.js +930 -0
- package/dist/entities/interfaces.js.map +1 -0
- package/dist/entities/lifecycle.d.ts +51 -0
- package/dist/entities/lifecycle.d.ts.map +1 -0
- package/dist/entities/lifecycle.js +804 -0
- package/dist/entities/lifecycle.js.map +1 -0
- package/dist/entities/products.d.ts +53 -0
- package/dist/entities/products.d.ts.map +1 -0
- package/dist/entities/products.js +798 -0
- package/dist/entities/products.js.map +1 -0
- package/dist/entities/web.d.ts +44 -0
- package/dist/entities/web.d.ts.map +1 -0
- package/dist/entities/web.js +658 -0
- package/dist/entities/web.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +36 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +101 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +140 -0
- package/dist/mcp.js.map +1 -0
- package/dist/product.d.ts +37 -0
- package/dist/product.d.ts.map +1 -0
- package/dist/product.js +54 -0
- package/dist/product.js.map +1 -0
- package/dist/registry.d.ts +9 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +32 -0
- package/dist/registry.js.map +1 -0
- package/dist/sdk.d.ts +99 -0
- package/dist/sdk.d.ts.map +1 -0
- package/dist/sdk.js +128 -0
- package/dist/sdk.js.map +1 -0
- package/dist/site.d.ts +85 -0
- package/dist/site.d.ts.map +1 -0
- package/dist/site.js +113 -0
- package/dist/site.js.map +1 -0
- package/dist/types.d.ts +528 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/example.ts +236 -0
- package/package.json +35 -0
- package/src/api.ts +140 -0
- package/src/app.ts +117 -0
- package/src/content.ts +82 -0
- package/src/data.ts +129 -0
- package/src/dataset.ts +53 -0
- package/src/entities/ai.ts +932 -0
- package/src/entities/content.ts +851 -0
- package/src/entities/index.ts +156 -0
- package/src/entities/interfaces.ts +1017 -0
- package/src/entities/lifecycle.ts +872 -0
- package/src/entities/products.ts +867 -0
- package/src/entities/web.ts +719 -0
- package/src/index.ts +55 -0
- package/src/mcp.ts +163 -0
- package/src/product.ts +59 -0
- package/src/registry.ts +41 -0
- package/src/sdk.ts +148 -0
- package/src/site.ts +127 -0
- package/src/types.ts +558 -0
- package/test/api.test.ts +247 -0
- package/test/app.test.ts +220 -0
- package/test/content.test.ts +171 -0
- package/test/data.test.ts +201 -0
- package/test/dataset.test.ts +181 -0
- package/test/mcp.test.ts +230 -0
- package/test/product.test.ts +200 -0
- package/test/sdk.test.ts +236 -0
- package/test/site.test.ts +245 -0
- package/tsconfig.json +9 -0
|
@@ -0,0 +1,804 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Lifecycle Entity Types (Nouns)
|
|
3
|
+
*
|
|
4
|
+
* Product lifecycle: Version, Release, Deployment, Environment, Feature
|
|
5
|
+
*
|
|
6
|
+
* @packageDocumentation
|
|
7
|
+
*/
|
|
8
|
+
// =============================================================================
|
|
9
|
+
// Version
|
|
10
|
+
// =============================================================================
|
|
11
|
+
/**
|
|
12
|
+
* Version entity
|
|
13
|
+
*
|
|
14
|
+
* Product version.
|
|
15
|
+
*/
|
|
16
|
+
export const Version = {
|
|
17
|
+
singular: 'version',
|
|
18
|
+
plural: 'versions',
|
|
19
|
+
description: 'A version of a digital product',
|
|
20
|
+
properties: {
|
|
21
|
+
// Identity
|
|
22
|
+
number: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Version number (semver)',
|
|
25
|
+
},
|
|
26
|
+
name: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
optional: true,
|
|
29
|
+
description: 'Version name/codename',
|
|
30
|
+
},
|
|
31
|
+
description: {
|
|
32
|
+
type: 'string',
|
|
33
|
+
optional: true,
|
|
34
|
+
description: 'Version description',
|
|
35
|
+
},
|
|
36
|
+
// Semver
|
|
37
|
+
major: {
|
|
38
|
+
type: 'number',
|
|
39
|
+
optional: true,
|
|
40
|
+
description: 'Major version',
|
|
41
|
+
},
|
|
42
|
+
minor: {
|
|
43
|
+
type: 'number',
|
|
44
|
+
optional: true,
|
|
45
|
+
description: 'Minor version',
|
|
46
|
+
},
|
|
47
|
+
patch: {
|
|
48
|
+
type: 'number',
|
|
49
|
+
optional: true,
|
|
50
|
+
description: 'Patch version',
|
|
51
|
+
},
|
|
52
|
+
prerelease: {
|
|
53
|
+
type: 'string',
|
|
54
|
+
optional: true,
|
|
55
|
+
description: 'Prerelease identifier',
|
|
56
|
+
examples: ['alpha', 'beta', 'rc'],
|
|
57
|
+
},
|
|
58
|
+
// Changes
|
|
59
|
+
changelog: {
|
|
60
|
+
type: 'string',
|
|
61
|
+
optional: true,
|
|
62
|
+
description: 'Changelog content',
|
|
63
|
+
},
|
|
64
|
+
breakingChanges: {
|
|
65
|
+
type: 'string',
|
|
66
|
+
array: true,
|
|
67
|
+
optional: true,
|
|
68
|
+
description: 'Breaking changes',
|
|
69
|
+
},
|
|
70
|
+
features: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
array: true,
|
|
73
|
+
optional: true,
|
|
74
|
+
description: 'New features',
|
|
75
|
+
},
|
|
76
|
+
fixes: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
array: true,
|
|
79
|
+
optional: true,
|
|
80
|
+
description: 'Bug fixes',
|
|
81
|
+
},
|
|
82
|
+
// Source
|
|
83
|
+
commitHash: {
|
|
84
|
+
type: 'string',
|
|
85
|
+
optional: true,
|
|
86
|
+
description: 'Git commit hash',
|
|
87
|
+
},
|
|
88
|
+
branch: {
|
|
89
|
+
type: 'string',
|
|
90
|
+
optional: true,
|
|
91
|
+
description: 'Git branch',
|
|
92
|
+
},
|
|
93
|
+
tag: {
|
|
94
|
+
type: 'string',
|
|
95
|
+
optional: true,
|
|
96
|
+
description: 'Git tag',
|
|
97
|
+
},
|
|
98
|
+
// Artifacts
|
|
99
|
+
artifactUrl: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
optional: true,
|
|
102
|
+
description: 'Build artifact URL',
|
|
103
|
+
},
|
|
104
|
+
checksum: {
|
|
105
|
+
type: 'string',
|
|
106
|
+
optional: true,
|
|
107
|
+
description: 'Artifact checksum',
|
|
108
|
+
},
|
|
109
|
+
// Dates
|
|
110
|
+
createdAt: {
|
|
111
|
+
type: 'date',
|
|
112
|
+
optional: true,
|
|
113
|
+
description: 'Creation date',
|
|
114
|
+
},
|
|
115
|
+
releasedAt: {
|
|
116
|
+
type: 'date',
|
|
117
|
+
optional: true,
|
|
118
|
+
description: 'Release date',
|
|
119
|
+
},
|
|
120
|
+
deprecatedAt: {
|
|
121
|
+
type: 'date',
|
|
122
|
+
optional: true,
|
|
123
|
+
description: 'Deprecation date',
|
|
124
|
+
},
|
|
125
|
+
// Status
|
|
126
|
+
status: {
|
|
127
|
+
type: 'string',
|
|
128
|
+
description: 'Version status',
|
|
129
|
+
examples: ['draft', 'prerelease', 'released', 'deprecated', 'yanked'],
|
|
130
|
+
},
|
|
131
|
+
stability: {
|
|
132
|
+
type: 'string',
|
|
133
|
+
optional: true,
|
|
134
|
+
description: 'Stability level',
|
|
135
|
+
examples: ['experimental', 'unstable', 'stable', 'lts'],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
relationships: {
|
|
139
|
+
product: {
|
|
140
|
+
type: 'DigitalProduct',
|
|
141
|
+
description: 'Parent product',
|
|
142
|
+
},
|
|
143
|
+
releases: {
|
|
144
|
+
type: 'Release[]',
|
|
145
|
+
description: 'Releases of this version',
|
|
146
|
+
},
|
|
147
|
+
previousVersion: {
|
|
148
|
+
type: 'Version',
|
|
149
|
+
required: false,
|
|
150
|
+
description: 'Previous version',
|
|
151
|
+
},
|
|
152
|
+
},
|
|
153
|
+
actions: [
|
|
154
|
+
'create',
|
|
155
|
+
'update',
|
|
156
|
+
'release',
|
|
157
|
+
'deprecate',
|
|
158
|
+
'yank',
|
|
159
|
+
],
|
|
160
|
+
events: [
|
|
161
|
+
'created',
|
|
162
|
+
'updated',
|
|
163
|
+
'released',
|
|
164
|
+
'deprecated',
|
|
165
|
+
'yanked',
|
|
166
|
+
],
|
|
167
|
+
};
|
|
168
|
+
// =============================================================================
|
|
169
|
+
// Release
|
|
170
|
+
// =============================================================================
|
|
171
|
+
/**
|
|
172
|
+
* Release entity
|
|
173
|
+
*
|
|
174
|
+
* Published release of a version.
|
|
175
|
+
*/
|
|
176
|
+
export const Release = {
|
|
177
|
+
singular: 'release',
|
|
178
|
+
plural: 'releases',
|
|
179
|
+
description: 'A published release of a product version',
|
|
180
|
+
properties: {
|
|
181
|
+
// Identity
|
|
182
|
+
name: {
|
|
183
|
+
type: 'string',
|
|
184
|
+
description: 'Release name',
|
|
185
|
+
},
|
|
186
|
+
tag: {
|
|
187
|
+
type: 'string',
|
|
188
|
+
optional: true,
|
|
189
|
+
description: 'Release tag',
|
|
190
|
+
},
|
|
191
|
+
description: {
|
|
192
|
+
type: 'string',
|
|
193
|
+
optional: true,
|
|
194
|
+
description: 'Release description',
|
|
195
|
+
},
|
|
196
|
+
// Type
|
|
197
|
+
type: {
|
|
198
|
+
type: 'string',
|
|
199
|
+
description: 'Release type',
|
|
200
|
+
examples: ['major', 'minor', 'patch', 'hotfix', 'prerelease', 'rc'],
|
|
201
|
+
},
|
|
202
|
+
channel: {
|
|
203
|
+
type: 'string',
|
|
204
|
+
optional: true,
|
|
205
|
+
description: 'Release channel',
|
|
206
|
+
examples: ['stable', 'beta', 'alpha', 'canary', 'nightly'],
|
|
207
|
+
},
|
|
208
|
+
// Notes
|
|
209
|
+
releaseNotes: {
|
|
210
|
+
type: 'string',
|
|
211
|
+
optional: true,
|
|
212
|
+
description: 'Release notes (markdown)',
|
|
213
|
+
},
|
|
214
|
+
highlights: {
|
|
215
|
+
type: 'string',
|
|
216
|
+
array: true,
|
|
217
|
+
optional: true,
|
|
218
|
+
description: 'Release highlights',
|
|
219
|
+
},
|
|
220
|
+
// Assets
|
|
221
|
+
assets: {
|
|
222
|
+
type: 'json',
|
|
223
|
+
optional: true,
|
|
224
|
+
description: 'Release assets',
|
|
225
|
+
},
|
|
226
|
+
downloadUrl: {
|
|
227
|
+
type: 'string',
|
|
228
|
+
optional: true,
|
|
229
|
+
description: 'Download URL',
|
|
230
|
+
},
|
|
231
|
+
downloadCount: {
|
|
232
|
+
type: 'number',
|
|
233
|
+
optional: true,
|
|
234
|
+
description: 'Download count',
|
|
235
|
+
},
|
|
236
|
+
// Compatibility
|
|
237
|
+
minPlatformVersion: {
|
|
238
|
+
type: 'string',
|
|
239
|
+
optional: true,
|
|
240
|
+
description: 'Minimum platform version',
|
|
241
|
+
},
|
|
242
|
+
maxPlatformVersion: {
|
|
243
|
+
type: 'string',
|
|
244
|
+
optional: true,
|
|
245
|
+
description: 'Maximum platform version',
|
|
246
|
+
},
|
|
247
|
+
supportedPlatforms: {
|
|
248
|
+
type: 'string',
|
|
249
|
+
array: true,
|
|
250
|
+
optional: true,
|
|
251
|
+
description: 'Supported platforms',
|
|
252
|
+
},
|
|
253
|
+
// Dates
|
|
254
|
+
publishedAt: {
|
|
255
|
+
type: 'date',
|
|
256
|
+
optional: true,
|
|
257
|
+
description: 'Publication date',
|
|
258
|
+
},
|
|
259
|
+
endOfLifeAt: {
|
|
260
|
+
type: 'date',
|
|
261
|
+
optional: true,
|
|
262
|
+
description: 'End of life date',
|
|
263
|
+
},
|
|
264
|
+
// Status
|
|
265
|
+
status: {
|
|
266
|
+
type: 'string',
|
|
267
|
+
description: 'Release status',
|
|
268
|
+
examples: ['draft', 'published', 'latest', 'superseded', 'retracted'],
|
|
269
|
+
},
|
|
270
|
+
isLatest: {
|
|
271
|
+
type: 'boolean',
|
|
272
|
+
optional: true,
|
|
273
|
+
description: 'Is latest release',
|
|
274
|
+
},
|
|
275
|
+
},
|
|
276
|
+
relationships: {
|
|
277
|
+
version: {
|
|
278
|
+
type: 'Version',
|
|
279
|
+
description: 'Product version',
|
|
280
|
+
},
|
|
281
|
+
deployments: {
|
|
282
|
+
type: 'Deployment[]',
|
|
283
|
+
description: 'Release deployments',
|
|
284
|
+
},
|
|
285
|
+
},
|
|
286
|
+
actions: [
|
|
287
|
+
'create',
|
|
288
|
+
'update',
|
|
289
|
+
'publish',
|
|
290
|
+
'unpublish',
|
|
291
|
+
'setLatest',
|
|
292
|
+
'retract',
|
|
293
|
+
],
|
|
294
|
+
events: [
|
|
295
|
+
'created',
|
|
296
|
+
'updated',
|
|
297
|
+
'published',
|
|
298
|
+
'unpublished',
|
|
299
|
+
'setAsLatest',
|
|
300
|
+
'retracted',
|
|
301
|
+
],
|
|
302
|
+
};
|
|
303
|
+
// =============================================================================
|
|
304
|
+
// Deployment
|
|
305
|
+
// =============================================================================
|
|
306
|
+
/**
|
|
307
|
+
* Deployment entity
|
|
308
|
+
*
|
|
309
|
+
* Deployment instance.
|
|
310
|
+
*/
|
|
311
|
+
export const Deployment = {
|
|
312
|
+
singular: 'deployment',
|
|
313
|
+
plural: 'deployments',
|
|
314
|
+
description: 'A deployment of a product release',
|
|
315
|
+
properties: {
|
|
316
|
+
// Identity
|
|
317
|
+
id: {
|
|
318
|
+
type: 'string',
|
|
319
|
+
description: 'Deployment ID',
|
|
320
|
+
},
|
|
321
|
+
name: {
|
|
322
|
+
type: 'string',
|
|
323
|
+
optional: true,
|
|
324
|
+
description: 'Deployment name',
|
|
325
|
+
},
|
|
326
|
+
// Target
|
|
327
|
+
environment: {
|
|
328
|
+
type: 'string',
|
|
329
|
+
description: 'Target environment',
|
|
330
|
+
examples: ['production', 'staging', 'preview', 'development'],
|
|
331
|
+
},
|
|
332
|
+
region: {
|
|
333
|
+
type: 'string',
|
|
334
|
+
optional: true,
|
|
335
|
+
description: 'Deployment region',
|
|
336
|
+
},
|
|
337
|
+
// Platform
|
|
338
|
+
platform: {
|
|
339
|
+
type: 'string',
|
|
340
|
+
optional: true,
|
|
341
|
+
description: 'Deployment platform',
|
|
342
|
+
examples: ['vercel', 'netlify', 'cloudflare', 'aws', 'gcp', 'azure', 'kubernetes', 'custom'],
|
|
343
|
+
},
|
|
344
|
+
provider: {
|
|
345
|
+
type: 'string',
|
|
346
|
+
optional: true,
|
|
347
|
+
description: 'Cloud provider',
|
|
348
|
+
},
|
|
349
|
+
// Configuration
|
|
350
|
+
config: {
|
|
351
|
+
type: 'json',
|
|
352
|
+
optional: true,
|
|
353
|
+
description: 'Deployment configuration',
|
|
354
|
+
},
|
|
355
|
+
envVars: {
|
|
356
|
+
type: 'json',
|
|
357
|
+
optional: true,
|
|
358
|
+
description: 'Environment variables (non-sensitive)',
|
|
359
|
+
},
|
|
360
|
+
// URLs
|
|
361
|
+
url: {
|
|
362
|
+
type: 'string',
|
|
363
|
+
optional: true,
|
|
364
|
+
description: 'Deployment URL',
|
|
365
|
+
},
|
|
366
|
+
previewUrl: {
|
|
367
|
+
type: 'string',
|
|
368
|
+
optional: true,
|
|
369
|
+
description: 'Preview URL',
|
|
370
|
+
},
|
|
371
|
+
customDomain: {
|
|
372
|
+
type: 'string',
|
|
373
|
+
optional: true,
|
|
374
|
+
description: 'Custom domain',
|
|
375
|
+
},
|
|
376
|
+
// Resources
|
|
377
|
+
instanceCount: {
|
|
378
|
+
type: 'number',
|
|
379
|
+
optional: true,
|
|
380
|
+
description: 'Number of instances',
|
|
381
|
+
},
|
|
382
|
+
memory: {
|
|
383
|
+
type: 'string',
|
|
384
|
+
optional: true,
|
|
385
|
+
description: 'Memory allocation',
|
|
386
|
+
},
|
|
387
|
+
cpu: {
|
|
388
|
+
type: 'string',
|
|
389
|
+
optional: true,
|
|
390
|
+
description: 'CPU allocation',
|
|
391
|
+
},
|
|
392
|
+
// Build
|
|
393
|
+
buildId: {
|
|
394
|
+
type: 'string',
|
|
395
|
+
optional: true,
|
|
396
|
+
description: 'Build ID',
|
|
397
|
+
},
|
|
398
|
+
buildDurationMs: {
|
|
399
|
+
type: 'number',
|
|
400
|
+
optional: true,
|
|
401
|
+
description: 'Build duration',
|
|
402
|
+
},
|
|
403
|
+
artifactSize: {
|
|
404
|
+
type: 'number',
|
|
405
|
+
optional: true,
|
|
406
|
+
description: 'Artifact size in bytes',
|
|
407
|
+
},
|
|
408
|
+
// Dates
|
|
409
|
+
createdAt: {
|
|
410
|
+
type: 'date',
|
|
411
|
+
optional: true,
|
|
412
|
+
description: 'Creation date',
|
|
413
|
+
},
|
|
414
|
+
deployedAt: {
|
|
415
|
+
type: 'date',
|
|
416
|
+
optional: true,
|
|
417
|
+
description: 'Deployment date',
|
|
418
|
+
},
|
|
419
|
+
expiresAt: {
|
|
420
|
+
type: 'date',
|
|
421
|
+
optional: true,
|
|
422
|
+
description: 'Expiration date (for previews)',
|
|
423
|
+
},
|
|
424
|
+
// Status
|
|
425
|
+
status: {
|
|
426
|
+
type: 'string',
|
|
427
|
+
description: 'Deployment status',
|
|
428
|
+
examples: ['queued', 'building', 'deploying', 'ready', 'failed', 'cancelled', 'expired'],
|
|
429
|
+
},
|
|
430
|
+
isProduction: {
|
|
431
|
+
type: 'boolean',
|
|
432
|
+
optional: true,
|
|
433
|
+
description: 'Is production deployment',
|
|
434
|
+
},
|
|
435
|
+
},
|
|
436
|
+
relationships: {
|
|
437
|
+
product: {
|
|
438
|
+
type: 'DigitalProduct',
|
|
439
|
+
description: 'Product deployed',
|
|
440
|
+
},
|
|
441
|
+
release: {
|
|
442
|
+
type: 'Release',
|
|
443
|
+
required: false,
|
|
444
|
+
description: 'Release deployed',
|
|
445
|
+
},
|
|
446
|
+
environmentRef: {
|
|
447
|
+
type: 'Environment',
|
|
448
|
+
required: false,
|
|
449
|
+
description: 'Target environment',
|
|
450
|
+
},
|
|
451
|
+
},
|
|
452
|
+
actions: [
|
|
453
|
+
'create',
|
|
454
|
+
'build',
|
|
455
|
+
'deploy',
|
|
456
|
+
'promote',
|
|
457
|
+
'rollback',
|
|
458
|
+
'scale',
|
|
459
|
+
'pause',
|
|
460
|
+
'resume',
|
|
461
|
+
'terminate',
|
|
462
|
+
],
|
|
463
|
+
events: [
|
|
464
|
+
'created',
|
|
465
|
+
'built',
|
|
466
|
+
'deployed',
|
|
467
|
+
'promoted',
|
|
468
|
+
'rolledBack',
|
|
469
|
+
'scaled',
|
|
470
|
+
'paused',
|
|
471
|
+
'resumed',
|
|
472
|
+
'terminated',
|
|
473
|
+
],
|
|
474
|
+
};
|
|
475
|
+
// =============================================================================
|
|
476
|
+
// Environment
|
|
477
|
+
// =============================================================================
|
|
478
|
+
/**
|
|
479
|
+
* Environment entity
|
|
480
|
+
*
|
|
481
|
+
* Deployment environment.
|
|
482
|
+
*/
|
|
483
|
+
export const Environment = {
|
|
484
|
+
singular: 'environment',
|
|
485
|
+
plural: 'environments',
|
|
486
|
+
description: 'A deployment environment',
|
|
487
|
+
properties: {
|
|
488
|
+
// Identity
|
|
489
|
+
name: {
|
|
490
|
+
type: 'string',
|
|
491
|
+
description: 'Environment name',
|
|
492
|
+
},
|
|
493
|
+
slug: {
|
|
494
|
+
type: 'string',
|
|
495
|
+
optional: true,
|
|
496
|
+
description: 'URL-friendly identifier',
|
|
497
|
+
},
|
|
498
|
+
description: {
|
|
499
|
+
type: 'string',
|
|
500
|
+
optional: true,
|
|
501
|
+
description: 'Environment description',
|
|
502
|
+
},
|
|
503
|
+
// Type
|
|
504
|
+
type: {
|
|
505
|
+
type: 'string',
|
|
506
|
+
description: 'Environment type',
|
|
507
|
+
examples: ['production', 'staging', 'preview', 'development', 'testing', 'demo'],
|
|
508
|
+
},
|
|
509
|
+
tier: {
|
|
510
|
+
type: 'string',
|
|
511
|
+
optional: true,
|
|
512
|
+
description: 'Environment tier',
|
|
513
|
+
examples: ['production', 'non-production'],
|
|
514
|
+
},
|
|
515
|
+
// Configuration
|
|
516
|
+
config: {
|
|
517
|
+
type: 'json',
|
|
518
|
+
optional: true,
|
|
519
|
+
description: 'Environment configuration',
|
|
520
|
+
},
|
|
521
|
+
variables: {
|
|
522
|
+
type: 'json',
|
|
523
|
+
optional: true,
|
|
524
|
+
description: 'Environment variables',
|
|
525
|
+
},
|
|
526
|
+
secrets: {
|
|
527
|
+
type: 'string',
|
|
528
|
+
array: true,
|
|
529
|
+
optional: true,
|
|
530
|
+
description: 'Secret names (not values)',
|
|
531
|
+
},
|
|
532
|
+
// Access
|
|
533
|
+
url: {
|
|
534
|
+
type: 'string',
|
|
535
|
+
optional: true,
|
|
536
|
+
description: 'Environment URL',
|
|
537
|
+
},
|
|
538
|
+
protected: {
|
|
539
|
+
type: 'boolean',
|
|
540
|
+
optional: true,
|
|
541
|
+
description: 'Requires authentication',
|
|
542
|
+
},
|
|
543
|
+
allowedIPs: {
|
|
544
|
+
type: 'string',
|
|
545
|
+
array: true,
|
|
546
|
+
optional: true,
|
|
547
|
+
description: 'Allowed IP addresses',
|
|
548
|
+
},
|
|
549
|
+
// Promotion
|
|
550
|
+
promotesTo: {
|
|
551
|
+
type: 'string',
|
|
552
|
+
optional: true,
|
|
553
|
+
description: 'Environment to promote to',
|
|
554
|
+
},
|
|
555
|
+
promotesFrom: {
|
|
556
|
+
type: 'string',
|
|
557
|
+
optional: true,
|
|
558
|
+
description: 'Environment promoted from',
|
|
559
|
+
},
|
|
560
|
+
autoPromote: {
|
|
561
|
+
type: 'boolean',
|
|
562
|
+
optional: true,
|
|
563
|
+
description: 'Auto-promote on success',
|
|
564
|
+
},
|
|
565
|
+
// Resources
|
|
566
|
+
resourceQuota: {
|
|
567
|
+
type: 'json',
|
|
568
|
+
optional: true,
|
|
569
|
+
description: 'Resource quotas',
|
|
570
|
+
},
|
|
571
|
+
scaling: {
|
|
572
|
+
type: 'json',
|
|
573
|
+
optional: true,
|
|
574
|
+
description: 'Scaling configuration',
|
|
575
|
+
},
|
|
576
|
+
// Status
|
|
577
|
+
status: {
|
|
578
|
+
type: 'string',
|
|
579
|
+
description: 'Environment status',
|
|
580
|
+
examples: ['active', 'inactive', 'maintenance', 'deprecated'],
|
|
581
|
+
},
|
|
582
|
+
healthStatus: {
|
|
583
|
+
type: 'string',
|
|
584
|
+
optional: true,
|
|
585
|
+
description: 'Health status',
|
|
586
|
+
examples: ['healthy', 'degraded', 'unhealthy', 'unknown'],
|
|
587
|
+
},
|
|
588
|
+
},
|
|
589
|
+
relationships: {
|
|
590
|
+
product: {
|
|
591
|
+
type: 'DigitalProduct',
|
|
592
|
+
description: 'Parent product',
|
|
593
|
+
},
|
|
594
|
+
deployments: {
|
|
595
|
+
type: 'Deployment[]',
|
|
596
|
+
description: 'Environment deployments',
|
|
597
|
+
},
|
|
598
|
+
currentDeployment: {
|
|
599
|
+
type: 'Deployment',
|
|
600
|
+
required: false,
|
|
601
|
+
description: 'Current active deployment',
|
|
602
|
+
},
|
|
603
|
+
},
|
|
604
|
+
actions: [
|
|
605
|
+
'create',
|
|
606
|
+
'update',
|
|
607
|
+
'configure',
|
|
608
|
+
'activate',
|
|
609
|
+
'deactivate',
|
|
610
|
+
'promote',
|
|
611
|
+
'lock',
|
|
612
|
+
'unlock',
|
|
613
|
+
],
|
|
614
|
+
events: [
|
|
615
|
+
'created',
|
|
616
|
+
'updated',
|
|
617
|
+
'configured',
|
|
618
|
+
'activated',
|
|
619
|
+
'deactivated',
|
|
620
|
+
'promoted',
|
|
621
|
+
'locked',
|
|
622
|
+
'unlocked',
|
|
623
|
+
],
|
|
624
|
+
};
|
|
625
|
+
// =============================================================================
|
|
626
|
+
// Feature
|
|
627
|
+
// =============================================================================
|
|
628
|
+
/**
|
|
629
|
+
* Feature entity
|
|
630
|
+
*
|
|
631
|
+
* Product feature.
|
|
632
|
+
*/
|
|
633
|
+
export const Feature = {
|
|
634
|
+
singular: 'feature',
|
|
635
|
+
plural: 'features',
|
|
636
|
+
description: 'A product feature or capability',
|
|
637
|
+
properties: {
|
|
638
|
+
// Identity
|
|
639
|
+
name: {
|
|
640
|
+
type: 'string',
|
|
641
|
+
description: 'Feature name',
|
|
642
|
+
},
|
|
643
|
+
slug: {
|
|
644
|
+
type: 'string',
|
|
645
|
+
optional: true,
|
|
646
|
+
description: 'URL-friendly identifier',
|
|
647
|
+
},
|
|
648
|
+
description: {
|
|
649
|
+
type: 'string',
|
|
650
|
+
optional: true,
|
|
651
|
+
description: 'Feature description',
|
|
652
|
+
},
|
|
653
|
+
// Classification
|
|
654
|
+
type: {
|
|
655
|
+
type: 'string',
|
|
656
|
+
description: 'Feature type',
|
|
657
|
+
examples: ['core', 'premium', 'addon', 'beta', 'experimental', 'deprecated'],
|
|
658
|
+
},
|
|
659
|
+
category: {
|
|
660
|
+
type: 'string',
|
|
661
|
+
optional: true,
|
|
662
|
+
description: 'Feature category',
|
|
663
|
+
},
|
|
664
|
+
// Value
|
|
665
|
+
benefit: {
|
|
666
|
+
type: 'string',
|
|
667
|
+
optional: true,
|
|
668
|
+
description: 'User benefit',
|
|
669
|
+
},
|
|
670
|
+
valueProposition: {
|
|
671
|
+
type: 'string',
|
|
672
|
+
optional: true,
|
|
673
|
+
description: 'Value proposition',
|
|
674
|
+
},
|
|
675
|
+
// Feature Flag
|
|
676
|
+
flagKey: {
|
|
677
|
+
type: 'string',
|
|
678
|
+
optional: true,
|
|
679
|
+
description: 'Feature flag key',
|
|
680
|
+
},
|
|
681
|
+
defaultEnabled: {
|
|
682
|
+
type: 'boolean',
|
|
683
|
+
optional: true,
|
|
684
|
+
description: 'Enabled by default',
|
|
685
|
+
},
|
|
686
|
+
rolloutPercentage: {
|
|
687
|
+
type: 'number',
|
|
688
|
+
optional: true,
|
|
689
|
+
description: 'Rollout percentage (0-100)',
|
|
690
|
+
},
|
|
691
|
+
// Availability
|
|
692
|
+
availability: {
|
|
693
|
+
type: 'string',
|
|
694
|
+
optional: true,
|
|
695
|
+
description: 'Availability',
|
|
696
|
+
examples: ['all', 'paid', 'enterprise', 'beta', 'internal'],
|
|
697
|
+
},
|
|
698
|
+
requiredPlan: {
|
|
699
|
+
type: 'string',
|
|
700
|
+
optional: true,
|
|
701
|
+
description: 'Minimum required plan',
|
|
702
|
+
},
|
|
703
|
+
addOnPrice: {
|
|
704
|
+
type: 'number',
|
|
705
|
+
optional: true,
|
|
706
|
+
description: 'Add-on price if separate',
|
|
707
|
+
},
|
|
708
|
+
// Dependencies
|
|
709
|
+
dependsOn: {
|
|
710
|
+
type: 'string',
|
|
711
|
+
array: true,
|
|
712
|
+
optional: true,
|
|
713
|
+
description: 'Dependent features',
|
|
714
|
+
},
|
|
715
|
+
conflictsWith: {
|
|
716
|
+
type: 'string',
|
|
717
|
+
array: true,
|
|
718
|
+
optional: true,
|
|
719
|
+
description: 'Conflicting features',
|
|
720
|
+
},
|
|
721
|
+
// Lifecycle
|
|
722
|
+
introducedIn: {
|
|
723
|
+
type: 'string',
|
|
724
|
+
optional: true,
|
|
725
|
+
description: 'Version introduced',
|
|
726
|
+
},
|
|
727
|
+
deprecatedIn: {
|
|
728
|
+
type: 'string',
|
|
729
|
+
optional: true,
|
|
730
|
+
description: 'Version deprecated',
|
|
731
|
+
},
|
|
732
|
+
removedIn: {
|
|
733
|
+
type: 'string',
|
|
734
|
+
optional: true,
|
|
735
|
+
description: 'Version removed',
|
|
736
|
+
},
|
|
737
|
+
// Metrics
|
|
738
|
+
adoptionRate: {
|
|
739
|
+
type: 'number',
|
|
740
|
+
optional: true,
|
|
741
|
+
description: 'Adoption rate (0-1)',
|
|
742
|
+
},
|
|
743
|
+
usageCount: {
|
|
744
|
+
type: 'number',
|
|
745
|
+
optional: true,
|
|
746
|
+
description: 'Total usage count',
|
|
747
|
+
},
|
|
748
|
+
// Status
|
|
749
|
+
status: {
|
|
750
|
+
type: 'string',
|
|
751
|
+
description: 'Feature status',
|
|
752
|
+
examples: ['planned', 'development', 'beta', 'ga', 'deprecated', 'removed'],
|
|
753
|
+
},
|
|
754
|
+
},
|
|
755
|
+
relationships: {
|
|
756
|
+
product: {
|
|
757
|
+
type: 'DigitalProduct',
|
|
758
|
+
description: 'Parent product',
|
|
759
|
+
},
|
|
760
|
+
dependentFeatures: {
|
|
761
|
+
type: 'Feature[]',
|
|
762
|
+
description: 'Features that depend on this',
|
|
763
|
+
},
|
|
764
|
+
roadmapItem: {
|
|
765
|
+
type: 'RoadmapItem',
|
|
766
|
+
required: false,
|
|
767
|
+
description: 'Associated roadmap item',
|
|
768
|
+
},
|
|
769
|
+
},
|
|
770
|
+
actions: [
|
|
771
|
+
'create',
|
|
772
|
+
'update',
|
|
773
|
+
'enable',
|
|
774
|
+
'disable',
|
|
775
|
+
'rollout',
|
|
776
|
+
'deprecate',
|
|
777
|
+
'remove',
|
|
778
|
+
],
|
|
779
|
+
events: [
|
|
780
|
+
'created',
|
|
781
|
+
'updated',
|
|
782
|
+
'enabled',
|
|
783
|
+
'disabled',
|
|
784
|
+
'rolledOut',
|
|
785
|
+
'deprecated',
|
|
786
|
+
'removed',
|
|
787
|
+
],
|
|
788
|
+
};
|
|
789
|
+
// =============================================================================
|
|
790
|
+
// Exports
|
|
791
|
+
// =============================================================================
|
|
792
|
+
export const LifecycleEntities = {
|
|
793
|
+
Version,
|
|
794
|
+
Release,
|
|
795
|
+
Deployment,
|
|
796
|
+
Environment,
|
|
797
|
+
Feature,
|
|
798
|
+
};
|
|
799
|
+
export const LifecycleCategories = {
|
|
800
|
+
versioning: ['Version', 'Release'],
|
|
801
|
+
deployment: ['Deployment', 'Environment'],
|
|
802
|
+
features: ['Feature'],
|
|
803
|
+
};
|
|
804
|
+
//# sourceMappingURL=lifecycle.js.map
|