@contractspec/example.saas-boilerplate 1.44.1 → 1.45.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 (46) hide show
  1. package/.turbo/turbo-build$colon$bundle.log +24 -24
  2. package/.turbo/turbo-build.log +24 -24
  3. package/CHANGELOG.md +31 -0
  4. package/dist/billing/billing.event.d.ts +21 -21
  5. package/dist/billing/billing.event.js +3 -3
  6. package/dist/billing/billing.event.js.map +1 -1
  7. package/dist/billing/billing.operations.d.ts +43 -43
  8. package/dist/billing/billing.operations.d.ts.map +1 -1
  9. package/dist/billing/billing.operations.js +5 -5
  10. package/dist/billing/billing.operations.js.map +1 -1
  11. package/dist/billing/billing.presentation.js +2 -2
  12. package/dist/billing/billing.presentation.js.map +1 -1
  13. package/dist/billing/billing.schema.d.ts +47 -47
  14. package/dist/dashboard/dashboard.presentation.js +2 -2
  15. package/dist/dashboard/dashboard.presentation.js.map +1 -1
  16. package/dist/example.d.ts +3 -33
  17. package/dist/example.d.ts.map +1 -1
  18. package/dist/example.js +16 -11
  19. package/dist/example.js.map +1 -1
  20. package/dist/project/project.entity.d.ts +24 -24
  21. package/dist/project/project.enum.d.ts +3 -3
  22. package/dist/project/project.event.d.ts +22 -22
  23. package/dist/project/project.event.js +4 -4
  24. package/dist/project/project.event.js.map +1 -1
  25. package/dist/project/project.operations.d.ts +106 -106
  26. package/dist/project/project.operations.d.ts.map +1 -1
  27. package/dist/project/project.operations.js +8 -8
  28. package/dist/project/project.operations.js.map +1 -1
  29. package/dist/project/project.presentation.js +2 -2
  30. package/dist/project/project.presentation.js.map +1 -1
  31. package/dist/project/project.schema.d.ts +54 -54
  32. package/dist/saas-boilerplate.feature.js +38 -38
  33. package/dist/saas-boilerplate.feature.js.map +1 -1
  34. package/dist/settings/settings.entity.d.ts +24 -24
  35. package/dist/settings/settings.enum.d.ts +2 -2
  36. package/package.json +10 -10
  37. package/src/billing/billing.event.ts +3 -3
  38. package/src/billing/billing.operations.ts +5 -5
  39. package/src/billing/billing.presentation.ts +2 -2
  40. package/src/dashboard/dashboard.presentation.ts +2 -2
  41. package/src/example.ts +16 -9
  42. package/src/project/project.event.ts +4 -4
  43. package/src/project/project.operations.ts +8 -8
  44. package/src/project/project.presentation.ts +2 -2
  45. package/src/saas-boilerplate.feature.ts +42 -38
  46. package/tsconfig.tsbuildinfo +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"billing.operations.d.ts","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":[],"mappings":";;;;;;;cAiBa,yBAAuB,6BAAA,CAAA,cAuClC,2BAAA,CAvCkC,cAAA,8BAAA;EAAvB,EAAA,EAAA;IAuCX,IAAA,EAvCkC,2BAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;EAAA,CAAA;EAAA,MAAA,EAAA;IA4CvB,IAAA,sCA6CX,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;+CA7C8B,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;EAAA,CAAA;AAkDhC,CAAA,CAAA,EAAa,SAAA,CAAA;;;;cAlDA,mDAAmB,0CAAA;;UA6C9B,2BAAA,CAAA;;;;;;EAKkC,CAAA;EAwCvB,QAAA,EAAA;IAmCX,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;EAnCqC,CAAA;;;;;EAAA,QAAA,EAAA;;;;;;UA1FP,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkDnB,uDAAuB,0CAAA;;UAmClC,2BAAA,CAAA;;;;;UAnCkC,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCvB,0DAA0B,0CAAA;;UAmCrC,2BAAA,CAAA;;;;;UAnCqC,2BAAA,CAAA"}
1
+ {"version":3,"file":"billing.operations.d.ts","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":[],"mappings":";;;;;;;cAiBa,yBAAuB,4BAAA,CAAA,cAuClC,0BAAA,CAvCkC,cAAA,6BAAA;EAAvB,EAAA,EAAA;IAuCX,IAAA,EAvCkC,0BAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;;;;;EAAA,CAAA;EAAA,MAAA,EAAA;IA4CvB,IAAA,qCA6CX,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;8CA7C8B,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;;;;;;;;;EAAA,CAAA;AAkDhC,CAAA,CAAA,EAAa,SAAA,CAAA;;;;cAlDA,kDAAmB,yCAAA;;UA6C9B,0BAAA,CAAA;;;;;;EAKkC,CAAA;EAwCvB,QAAA,EAAA;IAmCX,IAAA,sCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;EAnCqC,CAAA;;;;;EAAA,QAAA,EAAA;;;;;;UA1FP,0BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAkDnB,sDAAuB,yCAAA;;UAmClC,0BAAA,CAAA;;;;;UAnCkC,0BAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;cAwCvB,yDAA0B,yCAAA;;UAmCrC,0BAAA,CAAA;;;;;UAnCqC,0BAAA,CAAA"}
@@ -9,7 +9,7 @@ const OWNERS = ["@example.saas-boilerplate"];
9
9
  const GetSubscriptionContract = defineQuery({
10
10
  meta: {
11
11
  key: "saas.billing.subscription.get",
12
- version: 1,
12
+ version: "1.0.0",
13
13
  stability: "stable",
14
14
  owners: [...OWNERS],
15
15
  tags: [
@@ -50,7 +50,7 @@ const GetSubscriptionContract = defineQuery({
50
50
  const RecordUsageContract = defineCommand({
51
51
  meta: {
52
52
  key: "saas.billing.usage.record",
53
- version: 1,
53
+ version: "1.0.0",
54
54
  stability: "stable",
55
55
  owners: [...OWNERS],
56
56
  tags: [
@@ -69,7 +69,7 @@ const RecordUsageContract = defineCommand({
69
69
  policy: { auth: "user" },
70
70
  sideEffects: { emits: [{
71
71
  key: "billing.usage.recorded",
72
- version: 1,
72
+ version: "1.0.0",
73
73
  when: "Usage is recorded",
74
74
  payload: UsageRecordedPayloadModel
75
75
  }] },
@@ -100,7 +100,7 @@ const RecordUsageContract = defineCommand({
100
100
  const GetUsageSummaryContract = defineQuery({
101
101
  meta: {
102
102
  key: "saas.billing.usage.summary",
103
- version: 1,
103
+ version: "1.0.0",
104
104
  stability: "stable",
105
105
  owners: [...OWNERS],
106
106
  tags: [
@@ -141,7 +141,7 @@ const GetUsageSummaryContract = defineQuery({
141
141
  const CheckFeatureAccessContract = defineQuery({
142
142
  meta: {
143
143
  key: "saas.billing.feature.check",
144
- version: 1,
144
+ version: "1.0.0",
145
145
  stability: "stable",
146
146
  owners: [...OWNERS],
147
147
  tags: [
@@ -1 +1 @@
1
- {"version":3,"file":"billing.operations.js","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":["import { defineCommand, defineQuery } from '@contractspec/lib.contracts';\nimport {\n CheckFeatureAccessInputModel,\n CheckFeatureAccessOutputModel,\n GetUsageSummaryInputModel,\n GetUsageSummaryOutputModel,\n RecordUsageInputModel,\n RecordUsageOutputModel,\n SubscriptionModel,\n UsageRecordedPayloadModel,\n} from './billing.schema';\n\nconst OWNERS = ['@example.saas-boilerplate'] as const;\n\n/**\n * Get subscription status.\n */\nexport const GetSubscriptionContract = defineQuery({\n meta: {\n key: 'saas.billing.subscription.get',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'subscription'],\n description: 'Get organization subscription status.',\n goal: 'Show current plan and billing status.',\n context: 'Billing page, plan upgrade prompts.',\n },\n io: {\n input: null,\n output: SubscriptionModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-subscription-happy-path',\n given: ['Organization has active subscription'],\n when: ['User requests subscription status'],\n then: ['Subscription details are returned'],\n },\n ],\n examples: [\n {\n key: 'get-basic',\n input: null,\n output: {\n plan: 'pro',\n status: 'active',\n currentPeriodEnd: '2025-02-01T00:00:00Z',\n },\n },\n ],\n },\n});\n\n/**\n * Record feature usage.\n */\nexport const RecordUsageContract = defineCommand({\n meta: {\n key: 'saas.billing.usage.record',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Record usage of a metered feature.',\n goal: 'Track feature usage for billing.',\n context: 'Called by services when metered features are used.',\n },\n io: {\n input: RecordUsageInputModel,\n output: RecordUsageOutputModel,\n },\n policy: {\n auth: 'user',\n },\n sideEffects: {\n emits: [\n {\n key: 'billing.usage.recorded',\n version: 1,\n when: 'Usage is recorded',\n payload: UsageRecordedPayloadModel,\n },\n ],\n },\n acceptance: {\n scenarios: [\n {\n key: 'record-usage-happy-path',\n given: ['Organization exists'],\n when: ['System records feature usage'],\n then: ['Usage is recorded'],\n },\n ],\n examples: [\n {\n key: 'record-api-call',\n input: { feature: 'api_calls', quantity: 1, idempotencyKey: 'abc-123' },\n output: { recorded: true, currentUsage: 100 },\n },\n ],\n },\n});\n\n/**\n * Get usage summary.\n */\nexport const GetUsageSummaryContract = defineQuery({\n meta: {\n key: 'saas.billing.usage.summary',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Get usage summary for the current billing period.',\n goal: 'Show usage vs limits.',\n context: 'Billing page, usage dashboards.',\n },\n io: {\n input: GetUsageSummaryInputModel,\n output: GetUsageSummaryOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-usage-happy-path',\n given: ['Organization has usage history'],\n when: ['User requests usage summary'],\n then: ['Usage metrics are returned'],\n },\n ],\n examples: [\n {\n key: 'get-current-usage',\n input: { period: 'current' },\n output: { features: [{ name: 'api_calls', used: 100, limit: 1000 }] },\n },\n ],\n },\n});\n\n/**\n * Check feature access.\n */\nexport const CheckFeatureAccessContract = defineQuery({\n meta: {\n key: 'saas.billing.feature.check',\n version: 1,\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'feature'],\n description: 'Check if organization has access to a feature.',\n goal: 'Gate features based on plan/usage.',\n context: 'Feature access checks, upgrade prompts.',\n },\n io: {\n input: CheckFeatureAccessInputModel,\n output: CheckFeatureAccessOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'check-access-granted',\n given: ['Organization is on Pro plan'],\n when: ['User checks access to Pro feature'],\n then: ['Access is granted'],\n },\n ],\n examples: [\n {\n key: 'check-advanced-reports',\n input: { feature: 'advanced_reports' },\n output: { hasAccess: true, reason: 'Included in Pro plan' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAYA,MAAM,SAAS,CAAC,4BAA4B;;;;AAK5C,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAe;EACzC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,uCAAuC;GAC/C,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oCAAoC;GAC5C,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;GACP,QAAQ;IACN,MAAM;IACN,QAAQ;IACR,kBAAkB;IACnB;GACF,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,cAAc;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,aAAa,EACX,OAAO,CACL;EACE,KAAK;EACL,SAAS;EACT,MAAM;EACN,SAAS;EACV,CACF,EACF;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,sBAAsB;GAC9B,MAAM,CAAC,+BAA+B;GACtC,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IAAE,SAAS;IAAa,UAAU;IAAG,gBAAgB;IAAW;GACvE,QAAQ;IAAE,UAAU;IAAM,cAAc;IAAK;GAC9C,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,iCAAiC;GACzC,MAAM,CAAC,8BAA8B;GACrC,MAAM,CAAC,6BAA6B;GACrC,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,QAAQ,WAAW;GAC5B,QAAQ,EAAE,UAAU,CAAC;IAAE,MAAM;IAAa,MAAM;IAAK,OAAO;IAAM,CAAC,EAAE;GACtE,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,YAAY;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAU;EACpC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,8BAA8B;GACtC,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,SAAS,oBAAoB;GACtC,QAAQ;IAAE,WAAW;IAAM,QAAQ;IAAwB;GAC5D,CACF;EACF;CACF,CAAC"}
1
+ {"version":3,"file":"billing.operations.js","names":[],"sources":["../../src/billing/billing.operations.ts"],"sourcesContent":["import { defineCommand, defineQuery } from '@contractspec/lib.contracts';\nimport {\n CheckFeatureAccessInputModel,\n CheckFeatureAccessOutputModel,\n GetUsageSummaryInputModel,\n GetUsageSummaryOutputModel,\n RecordUsageInputModel,\n RecordUsageOutputModel,\n SubscriptionModel,\n UsageRecordedPayloadModel,\n} from './billing.schema';\n\nconst OWNERS = ['@example.saas-boilerplate'] as const;\n\n/**\n * Get subscription status.\n */\nexport const GetSubscriptionContract = defineQuery({\n meta: {\n key: 'saas.billing.subscription.get',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'subscription'],\n description: 'Get organization subscription status.',\n goal: 'Show current plan and billing status.',\n context: 'Billing page, plan upgrade prompts.',\n },\n io: {\n input: null,\n output: SubscriptionModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-subscription-happy-path',\n given: ['Organization has active subscription'],\n when: ['User requests subscription status'],\n then: ['Subscription details are returned'],\n },\n ],\n examples: [\n {\n key: 'get-basic',\n input: null,\n output: {\n plan: 'pro',\n status: 'active',\n currentPeriodEnd: '2025-02-01T00:00:00Z',\n },\n },\n ],\n },\n});\n\n/**\n * Record feature usage.\n */\nexport const RecordUsageContract = defineCommand({\n meta: {\n key: 'saas.billing.usage.record',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Record usage of a metered feature.',\n goal: 'Track feature usage for billing.',\n context: 'Called by services when metered features are used.',\n },\n io: {\n input: RecordUsageInputModel,\n output: RecordUsageOutputModel,\n },\n policy: {\n auth: 'user',\n },\n sideEffects: {\n emits: [\n {\n key: 'billing.usage.recorded',\n version: '1.0.0',\n when: 'Usage is recorded',\n payload: UsageRecordedPayloadModel,\n },\n ],\n },\n acceptance: {\n scenarios: [\n {\n key: 'record-usage-happy-path',\n given: ['Organization exists'],\n when: ['System records feature usage'],\n then: ['Usage is recorded'],\n },\n ],\n examples: [\n {\n key: 'record-api-call',\n input: { feature: 'api_calls', quantity: 1, idempotencyKey: 'abc-123' },\n output: { recorded: true, currentUsage: 100 },\n },\n ],\n },\n});\n\n/**\n * Get usage summary.\n */\nexport const GetUsageSummaryContract = defineQuery({\n meta: {\n key: 'saas.billing.usage.summary',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'usage'],\n description: 'Get usage summary for the current billing period.',\n goal: 'Show usage vs limits.',\n context: 'Billing page, usage dashboards.',\n },\n io: {\n input: GetUsageSummaryInputModel,\n output: GetUsageSummaryOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'get-usage-happy-path',\n given: ['Organization has usage history'],\n when: ['User requests usage summary'],\n then: ['Usage metrics are returned'],\n },\n ],\n examples: [\n {\n key: 'get-current-usage',\n input: { period: 'current' },\n output: { features: [{ name: 'api_calls', used: 100, limit: 1000 }] },\n },\n ],\n },\n});\n\n/**\n * Check feature access.\n */\nexport const CheckFeatureAccessContract = defineQuery({\n meta: {\n key: 'saas.billing.feature.check',\n version: '1.0.0',\n stability: 'stable',\n owners: [...OWNERS],\n tags: ['saas', 'billing', 'feature'],\n description: 'Check if organization has access to a feature.',\n goal: 'Gate features based on plan/usage.',\n context: 'Feature access checks, upgrade prompts.',\n },\n io: {\n input: CheckFeatureAccessInputModel,\n output: CheckFeatureAccessOutputModel,\n },\n policy: {\n auth: 'user',\n },\n acceptance: {\n scenarios: [\n {\n key: 'check-access-granted',\n given: ['Organization is on Pro plan'],\n when: ['User checks access to Pro feature'],\n then: ['Access is granted'],\n },\n ],\n examples: [\n {\n key: 'check-advanced-reports',\n input: { feature: 'advanced_reports' },\n output: { hasAccess: true, reason: 'Included in Pro plan' },\n },\n ],\n },\n});\n"],"mappings":";;;;AAYA,MAAM,SAAS,CAAC,4BAA4B;;;;AAK5C,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAe;EACzC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,uCAAuC;GAC/C,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oCAAoC;GAC5C,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;GACP,QAAQ;IACN,MAAM;IACN,QAAQ;IACR,kBAAkB;IACnB;GACF,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,cAAc;CAC/C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,aAAa,EACX,OAAO,CACL;EACE,KAAK;EACL,SAAS;EACT,MAAM;EACN,SAAS;EACV,CACF,EACF;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,sBAAsB;GAC9B,MAAM,CAAC,+BAA+B;GACtC,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO;IAAE,SAAS;IAAa,UAAU;IAAG,gBAAgB;IAAW;GACvE,QAAQ;IAAE,UAAU;IAAM,cAAc;IAAK;GAC9C,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,0BAA0B,YAAY;CACjD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAQ;EAClC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,iCAAiC;GACzC,MAAM,CAAC,8BAA8B;GACrC,MAAM,CAAC,6BAA6B;GACrC,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,QAAQ,WAAW;GAC5B,QAAQ,EAAE,UAAU,CAAC;IAAE,MAAM;IAAa,MAAM;IAAK,OAAO;IAAM,CAAC,EAAE;GACtE,CACF;EACF;CACF,CAAC;;;;AAKF,MAAa,6BAA6B,YAAY;CACpD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,WAAW;EACX,QAAQ,CAAC,GAAG,OAAO;EACnB,MAAM;GAAC;GAAQ;GAAW;GAAU;EACpC,aAAa;EACb,MAAM;EACN,SAAS;EACV;CACD,IAAI;EACF,OAAO;EACP,QAAQ;EACT;CACD,QAAQ,EACN,MAAM,QACP;CACD,YAAY;EACV,WAAW,CACT;GACE,KAAK;GACL,OAAO,CAAC,8BAA8B;GACtC,MAAM,CAAC,oCAAoC;GAC3C,MAAM,CAAC,oBAAoB;GAC5B,CACF;EACD,UAAU,CACR;GACE,KAAK;GACL,OAAO,EAAE,SAAS,oBAAoB;GACtC,QAAQ;IAAE,WAAW;IAAM,QAAQ;IAAwB;GAC5D,CACF;EACF;CACF,CAAC"}
@@ -7,7 +7,7 @@ import { StabilityEnum } from "@contractspec/lib.contracts";
7
7
  const SubscriptionPresentation = {
8
8
  meta: {
9
9
  key: "saas.billing.subscription",
10
- version: 1,
10
+ version: "1.0.0",
11
11
  title: "Subscription Status",
12
12
  description: "Subscription status with plan info, limits, and current usage",
13
13
  domain: "saas-boilerplate",
@@ -31,7 +31,7 @@ const SubscriptionPresentation = {
31
31
  const UsageDashboardPresentation = {
32
32
  meta: {
33
33
  key: "saas.billing.usage",
34
- version: 1,
34
+ version: "1.0.0",
35
35
  title: "Usage Dashboard",
36
36
  description: "Usage metrics and breakdown by resource type",
37
37
  domain: "saas-boilerplate",
@@ -1 +1 @@
1
- {"version":3,"file":"billing.presentation.js","names":["SubscriptionPresentation: PresentationSpec","UsageDashboardPresentation: PresentationSpec"],"sources":["../../src/billing/billing.presentation.ts"],"sourcesContent":["import type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Presentation for subscription overview.\n */\nexport const SubscriptionPresentation: PresentationSpec = {\n meta: {\n key: 'saas.billing.subscription',\n version: 1,\n title: 'Subscription Status',\n description:\n 'Subscription status with plan info, limits, and current usage',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['billing', 'subscription'],\n stability: StabilityEnum.Beta,\n goal: 'View subscription plan and status',\n context: 'Billing section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SubscriptionView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.billing.enabled'],\n },\n};\n\n/**\n * Presentation for usage dashboard.\n */\nexport const UsageDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'saas.billing.usage',\n version: 1,\n title: 'Usage Dashboard',\n description: 'Usage metrics and breakdown by resource type',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['billing', 'usage', 'metrics'],\n stability: StabilityEnum.Beta,\n goal: 'Monitor feature usage and limits',\n context: 'Billing section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'UsageDashboardView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.billing.enabled'],\n },\n};\n"],"mappings":";;;;;;AAMA,MAAaA,2BAA6C;CACxD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,eAAe;EACjC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF;;;;AAKD,MAAaC,6BAA+C;CAC1D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAU;EACrC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF"}
1
+ {"version":3,"file":"billing.presentation.js","names":["SubscriptionPresentation: PresentationSpec","UsageDashboardPresentation: PresentationSpec"],"sources":["../../src/billing/billing.presentation.ts"],"sourcesContent":["import type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Presentation for subscription overview.\n */\nexport const SubscriptionPresentation: PresentationSpec = {\n meta: {\n key: 'saas.billing.subscription',\n version: '1.0.0',\n title: 'Subscription Status',\n description:\n 'Subscription status with plan info, limits, and current usage',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['billing', 'subscription'],\n stability: StabilityEnum.Beta,\n goal: 'View subscription plan and status',\n context: 'Billing section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SubscriptionView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.billing.enabled'],\n },\n};\n\n/**\n * Presentation for usage dashboard.\n */\nexport const UsageDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'saas.billing.usage',\n version: '1.0.0',\n title: 'Usage Dashboard',\n description: 'Usage metrics and breakdown by resource type',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['billing', 'usage', 'metrics'],\n stability: StabilityEnum.Beta,\n goal: 'Monitor feature usage and limits',\n context: 'Billing section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'UsageDashboardView',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.billing.enabled'],\n },\n};\n"],"mappings":";;;;;;AAMA,MAAaA,2BAA6C;CACxD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,eAAe;EACjC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF;;;;AAKD,MAAaC,6BAA+C;CAC1D,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM;GAAC;GAAW;GAAS;GAAU;EACrC,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,uBAAuB,EAChC;CACF"}
@@ -1,168 +1,168 @@
1
- import * as _contractspec_lib_schema206 from "@contractspec/lib.schema";
1
+ import * as _contractspec_lib_schema101 from "@contractspec/lib.schema";
2
2
 
3
3
  //#region src/billing/billing.schema.d.ts
4
4
  /**
5
5
  * Organization subscription details schema.
6
6
  */
7
- declare const SubscriptionModel: _contractspec_lib_schema206.SchemaModel<{
7
+ declare const SubscriptionModel: _contractspec_lib_schema101.SchemaModel<{
8
8
  id: {
9
- type: _contractspec_lib_schema206.FieldType<string, string>;
9
+ type: _contractspec_lib_schema101.FieldType<string, string>;
10
10
  isOptional: false;
11
11
  };
12
12
  organizationId: {
13
- type: _contractspec_lib_schema206.FieldType<string, string>;
13
+ type: _contractspec_lib_schema101.FieldType<string, string>;
14
14
  isOptional: false;
15
15
  };
16
16
  planId: {
17
- type: _contractspec_lib_schema206.FieldType<string, string>;
17
+ type: _contractspec_lib_schema101.FieldType<string, string>;
18
18
  isOptional: false;
19
19
  };
20
20
  planName: {
21
- type: _contractspec_lib_schema206.FieldType<string, string>;
21
+ type: _contractspec_lib_schema101.FieldType<string, string>;
22
22
  isOptional: false;
23
23
  };
24
24
  status: {
25
- type: _contractspec_lib_schema206.EnumType<[string, string, string, string, string]>;
25
+ type: _contractspec_lib_schema101.EnumType<[string, string, string, string, string]>;
26
26
  isOptional: false;
27
27
  };
28
28
  currentPeriodStart: {
29
- type: _contractspec_lib_schema206.FieldType<Date, string>;
29
+ type: _contractspec_lib_schema101.FieldType<Date, string>;
30
30
  isOptional: false;
31
31
  };
32
32
  currentPeriodEnd: {
33
- type: _contractspec_lib_schema206.FieldType<Date, string>;
33
+ type: _contractspec_lib_schema101.FieldType<Date, string>;
34
34
  isOptional: false;
35
35
  };
36
36
  trialEndsAt: {
37
- type: _contractspec_lib_schema206.FieldType<Date, string>;
37
+ type: _contractspec_lib_schema101.FieldType<Date, string>;
38
38
  isOptional: true;
39
39
  };
40
40
  cancelAtPeriodEnd: {
41
- type: _contractspec_lib_schema206.FieldType<boolean, boolean>;
41
+ type: _contractspec_lib_schema101.FieldType<boolean, boolean>;
42
42
  isOptional: false;
43
43
  };
44
44
  }>;
45
45
  /**
46
46
  * Usage summary for a feature schema.
47
47
  */
48
- declare const UsageSummaryModel: _contractspec_lib_schema206.SchemaModel<{
48
+ declare const UsageSummaryModel: _contractspec_lib_schema101.SchemaModel<{
49
49
  feature: {
50
- type: _contractspec_lib_schema206.FieldType<string, string>;
50
+ type: _contractspec_lib_schema101.FieldType<string, string>;
51
51
  isOptional: false;
52
52
  };
53
53
  used: {
54
- type: _contractspec_lib_schema206.FieldType<number, number>;
54
+ type: _contractspec_lib_schema101.FieldType<number, number>;
55
55
  isOptional: false;
56
56
  };
57
57
  limit: {
58
- type: _contractspec_lib_schema206.FieldType<number, number>;
58
+ type: _contractspec_lib_schema101.FieldType<number, number>;
59
59
  isOptional: true;
60
60
  };
61
61
  unit: {
62
- type: _contractspec_lib_schema206.FieldType<string, string>;
62
+ type: _contractspec_lib_schema101.FieldType<string, string>;
63
63
  isOptional: true;
64
64
  };
65
65
  percentage: {
66
- type: _contractspec_lib_schema206.FieldType<number, number>;
66
+ type: _contractspec_lib_schema101.FieldType<number, number>;
67
67
  isOptional: true;
68
68
  };
69
69
  }>;
70
70
  /**
71
71
  * Input for recording feature usage.
72
72
  */
73
- declare const RecordUsageInputModel: _contractspec_lib_schema206.SchemaModel<{
73
+ declare const RecordUsageInputModel: _contractspec_lib_schema101.SchemaModel<{
74
74
  feature: {
75
- type: _contractspec_lib_schema206.FieldType<string, string>;
75
+ type: _contractspec_lib_schema101.FieldType<string, string>;
76
76
  isOptional: false;
77
77
  };
78
78
  quantity: {
79
- type: _contractspec_lib_schema206.FieldType<number, number>;
79
+ type: _contractspec_lib_schema101.FieldType<number, number>;
80
80
  isOptional: false;
81
81
  };
82
82
  sourceId: {
83
- type: _contractspec_lib_schema206.FieldType<string, string>;
83
+ type: _contractspec_lib_schema101.FieldType<string, string>;
84
84
  isOptional: true;
85
85
  };
86
86
  sourceType: {
87
- type: _contractspec_lib_schema206.FieldType<string, string>;
87
+ type: _contractspec_lib_schema101.FieldType<string, string>;
88
88
  isOptional: true;
89
89
  };
90
90
  metadata: {
91
- type: _contractspec_lib_schema206.FieldType<Record<string, unknown>, Record<string, unknown>>;
91
+ type: _contractspec_lib_schema101.FieldType<Record<string, unknown>, Record<string, unknown>>;
92
92
  isOptional: true;
93
93
  };
94
94
  }>;
95
95
  /**
96
96
  * Output for recording feature usage.
97
97
  */
98
- declare const RecordUsageOutputModel: _contractspec_lib_schema206.SchemaModel<{
98
+ declare const RecordUsageOutputModel: _contractspec_lib_schema101.SchemaModel<{
99
99
  recorded: {
100
- type: _contractspec_lib_schema206.FieldType<boolean, boolean>;
100
+ type: _contractspec_lib_schema101.FieldType<boolean, boolean>;
101
101
  isOptional: false;
102
102
  };
103
103
  currentUsage: {
104
- type: _contractspec_lib_schema206.FieldType<number, number>;
104
+ type: _contractspec_lib_schema101.FieldType<number, number>;
105
105
  isOptional: false;
106
106
  };
107
107
  limit: {
108
- type: _contractspec_lib_schema206.FieldType<number, number>;
108
+ type: _contractspec_lib_schema101.FieldType<number, number>;
109
109
  isOptional: true;
110
110
  };
111
111
  limitReached: {
112
- type: _contractspec_lib_schema206.FieldType<boolean, boolean>;
112
+ type: _contractspec_lib_schema101.FieldType<boolean, boolean>;
113
113
  isOptional: false;
114
114
  };
115
115
  }>;
116
116
  /**
117
117
  * Payload for usage.recorded event.
118
118
  */
119
- declare const UsageRecordedPayloadModel: _contractspec_lib_schema206.SchemaModel<{
119
+ declare const UsageRecordedPayloadModel: _contractspec_lib_schema101.SchemaModel<{
120
120
  feature: {
121
- type: _contractspec_lib_schema206.FieldType<string, string>;
121
+ type: _contractspec_lib_schema101.FieldType<string, string>;
122
122
  isOptional: false;
123
123
  };
124
124
  quantity: {
125
- type: _contractspec_lib_schema206.FieldType<number, number>;
125
+ type: _contractspec_lib_schema101.FieldType<number, number>;
126
126
  isOptional: false;
127
127
  };
128
128
  }>;
129
129
  /**
130
130
  * Input for getting usage summary.
131
131
  */
132
- declare const GetUsageSummaryInputModel: _contractspec_lib_schema206.SchemaModel<{
132
+ declare const GetUsageSummaryInputModel: _contractspec_lib_schema101.SchemaModel<{
133
133
  billingPeriod: {
134
- type: _contractspec_lib_schema206.FieldType<string, string>;
134
+ type: _contractspec_lib_schema101.FieldType<string, string>;
135
135
  isOptional: true;
136
136
  };
137
137
  }>;
138
138
  /**
139
139
  * Output for usage summary.
140
140
  */
141
- declare const GetUsageSummaryOutputModel: _contractspec_lib_schema206.SchemaModel<{
141
+ declare const GetUsageSummaryOutputModel: _contractspec_lib_schema101.SchemaModel<{
142
142
  billingPeriod: {
143
- type: _contractspec_lib_schema206.FieldType<string, string>;
143
+ type: _contractspec_lib_schema101.FieldType<string, string>;
144
144
  isOptional: false;
145
145
  };
146
146
  usage: {
147
- type: _contractspec_lib_schema206.SchemaModel<{
147
+ type: _contractspec_lib_schema101.SchemaModel<{
148
148
  feature: {
149
- type: _contractspec_lib_schema206.FieldType<string, string>;
149
+ type: _contractspec_lib_schema101.FieldType<string, string>;
150
150
  isOptional: false;
151
151
  };
152
152
  used: {
153
- type: _contractspec_lib_schema206.FieldType<number, number>;
153
+ type: _contractspec_lib_schema101.FieldType<number, number>;
154
154
  isOptional: false;
155
155
  };
156
156
  limit: {
157
- type: _contractspec_lib_schema206.FieldType<number, number>;
157
+ type: _contractspec_lib_schema101.FieldType<number, number>;
158
158
  isOptional: true;
159
159
  };
160
160
  unit: {
161
- type: _contractspec_lib_schema206.FieldType<string, string>;
161
+ type: _contractspec_lib_schema101.FieldType<string, string>;
162
162
  isOptional: true;
163
163
  };
164
164
  percentage: {
165
- type: _contractspec_lib_schema206.FieldType<number, number>;
165
+ type: _contractspec_lib_schema101.FieldType<number, number>;
166
166
  isOptional: true;
167
167
  };
168
168
  }>;
@@ -173,26 +173,26 @@ declare const GetUsageSummaryOutputModel: _contractspec_lib_schema206.SchemaMode
173
173
  /**
174
174
  * Input for checking feature access.
175
175
  */
176
- declare const CheckFeatureAccessInputModel: _contractspec_lib_schema206.SchemaModel<{
176
+ declare const CheckFeatureAccessInputModel: _contractspec_lib_schema101.SchemaModel<{
177
177
  feature: {
178
- type: _contractspec_lib_schema206.FieldType<string, string>;
178
+ type: _contractspec_lib_schema101.FieldType<string, string>;
179
179
  isOptional: false;
180
180
  };
181
181
  }>;
182
182
  /**
183
183
  * Output for feature access check.
184
184
  */
185
- declare const CheckFeatureAccessOutputModel: _contractspec_lib_schema206.SchemaModel<{
185
+ declare const CheckFeatureAccessOutputModel: _contractspec_lib_schema101.SchemaModel<{
186
186
  hasAccess: {
187
- type: _contractspec_lib_schema206.FieldType<boolean, boolean>;
187
+ type: _contractspec_lib_schema101.FieldType<boolean, boolean>;
188
188
  isOptional: false;
189
189
  };
190
190
  reason: {
191
- type: _contractspec_lib_schema206.EnumType<[string, string, string, string]>;
191
+ type: _contractspec_lib_schema101.EnumType<[string, string, string, string]>;
192
192
  isOptional: true;
193
193
  };
194
194
  upgradeUrl: {
195
- type: _contractspec_lib_schema206.FieldType<string, string>;
195
+ type: _contractspec_lib_schema101.FieldType<string, string>;
196
196
  isOptional: true;
197
197
  };
198
198
  }>;
@@ -7,7 +7,7 @@ import { StabilityEnum } from "@contractspec/lib.contracts";
7
7
  const SaasDashboardPresentation = {
8
8
  meta: {
9
9
  key: "saas.dashboard",
10
- version: 1,
10
+ version: "1.0.0",
11
11
  title: "SaaS Dashboard",
12
12
  description: "Main SaaS dashboard with project overview, usage stats, and quick actions",
13
13
  domain: "saas-boilerplate",
@@ -31,7 +31,7 @@ const SaasDashboardPresentation = {
31
31
  const SettingsPanelPresentation = {
32
32
  meta: {
33
33
  key: "saas.settings",
34
- version: 1,
34
+ version: "1.0.0",
35
35
  title: "Settings Panel",
36
36
  description: "Organization and user settings panel",
37
37
  domain: "saas-boilerplate",
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.presentation.js","names":["SaasDashboardPresentation: PresentationSpec","SettingsPanelPresentation: PresentationSpec"],"sources":["../../src/dashboard/dashboard.presentation.ts"],"sourcesContent":["import type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Main dashboard presentation for the SaaS application.\n */\nexport const SaasDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'saas.dashboard',\n version: 1,\n title: 'SaaS Dashboard',\n description:\n 'Main SaaS dashboard with project overview, usage stats, and quick actions',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['dashboard', 'overview'],\n stability: StabilityEnum.Beta,\n goal: 'Overview of SaaS activity and metrics',\n context: 'Main dashboard',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SaasDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.enabled'],\n },\n};\n\n/**\n * Settings panel presentation.\n */\nexport const SettingsPanelPresentation: PresentationSpec = {\n meta: {\n key: 'saas.settings',\n version: 1,\n title: 'Settings Panel',\n description: 'Organization and user settings panel',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['settings', 'config'],\n stability: StabilityEnum.Beta,\n goal: 'Configure organization and user settings',\n context: 'Settings section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SettingsPanel',\n },\n targets: ['react'],\n policy: {\n flags: ['saas.enabled'],\n },\n};\n"],"mappings":";;;;;;AAMA,MAAaA,4BAA8C;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,aAAa,WAAW;EAC/B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,eAAe,EACxB;CACF;;;;AAKD,MAAaC,4BAA8C;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,YAAY,SAAS;EAC5B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,QAAQ;CAClB,QAAQ,EACN,OAAO,CAAC,eAAe,EACxB;CACF"}
1
+ {"version":3,"file":"dashboard.presentation.js","names":["SaasDashboardPresentation: PresentationSpec","SettingsPanelPresentation: PresentationSpec"],"sources":["../../src/dashboard/dashboard.presentation.ts"],"sourcesContent":["import type { PresentationSpec } from '@contractspec/lib.contracts';\nimport { StabilityEnum } from '@contractspec/lib.contracts';\n\n/**\n * Main dashboard presentation for the SaaS application.\n */\nexport const SaasDashboardPresentation: PresentationSpec = {\n meta: {\n key: 'saas.dashboard',\n version: '1.0.0',\n title: 'SaaS Dashboard',\n description:\n 'Main SaaS dashboard with project overview, usage stats, and quick actions',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['dashboard', 'overview'],\n stability: StabilityEnum.Beta,\n goal: 'Overview of SaaS activity and metrics',\n context: 'Main dashboard',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SaasDashboard',\n },\n targets: ['react', 'markdown'],\n policy: {\n flags: ['saas.enabled'],\n },\n};\n\n/**\n * Settings panel presentation.\n */\nexport const SettingsPanelPresentation: PresentationSpec = {\n meta: {\n key: 'saas.settings',\n version: '1.0.0',\n title: 'Settings Panel',\n description: 'Organization and user settings panel',\n domain: 'saas-boilerplate',\n owners: ['@saas-team'],\n tags: ['settings', 'config'],\n stability: StabilityEnum.Beta,\n goal: 'Configure organization and user settings',\n context: 'Settings section',\n },\n source: {\n type: 'component',\n framework: 'react',\n componentKey: 'SettingsPanel',\n },\n targets: ['react'],\n policy: {\n flags: ['saas.enabled'],\n },\n};\n"],"mappings":";;;;;;AAMA,MAAaA,4BAA8C;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,aAAa,WAAW;EAC/B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,SAAS,WAAW;CAC9B,QAAQ,EACN,OAAO,CAAC,eAAe,EACxB;CACF;;;;AAKD,MAAaC,4BAA8C;CACzD,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aAAa;EACb,QAAQ;EACR,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,YAAY,SAAS;EAC5B,WAAW,cAAc;EACzB,MAAM;EACN,SAAS;EACV;CACD,QAAQ;EACN,MAAM;EACN,WAAW;EACX,cAAc;EACf;CACD,SAAS,CAAC,QAAQ;CAClB,QAAQ,EACN,OAAO,CAAC,eAAe,EACxB;CACF"}
package/dist/example.d.ts CHANGED
@@ -1,37 +1,7 @@
1
+ import { ExampleSpec } from "@contractspec/lib.contracts";
2
+
1
3
  //#region src/example.d.ts
2
- declare const example: {
3
- readonly id: "saas-boilerplate";
4
- readonly title: "SaaS Boilerplate";
5
- readonly summary: "Multi-tenant SaaS foundation with orgs, projects, settings, billing usage, and RBAC.";
6
- readonly tags: readonly ["saas", "multi-tenant", "billing", "rbac"];
7
- readonly kind: "template";
8
- readonly visibility: "public";
9
- readonly docs: {
10
- readonly rootDocId: "docs.examples.saas-boilerplate";
11
- };
12
- readonly entrypoints: {
13
- readonly packageName: "@contractspec/example.saas-boilerplate";
14
- readonly feature: "./feature";
15
- readonly contracts: "./contracts";
16
- readonly presentations: "./presentations";
17
- readonly handlers: "./handlers";
18
- readonly docs: "./docs";
19
- };
20
- readonly surfaces: {
21
- readonly templates: true;
22
- readonly sandbox: {
23
- readonly enabled: true;
24
- readonly modes: readonly ["playground", "specs", "builder", "markdown", "evolution"];
25
- };
26
- readonly studio: {
27
- readonly enabled: true;
28
- readonly installable: true;
29
- };
30
- readonly mcp: {
31
- readonly enabled: true;
32
- };
33
- };
34
- };
4
+ declare const example: ExampleSpec;
35
5
  //#endregion
36
6
  export { example as default };
37
7
  //# sourceMappingURL=example.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";cAAM;EAAA,SAAA,EA4BI,EAAA,kBAAA"}
1
+ {"version":3,"file":"example.d.ts","names":[],"sources":["../src/example.ts"],"sourcesContent":[],"mappings":";;;cAEM,SAAS"}
package/dist/example.js CHANGED
@@ -1,16 +1,21 @@
1
1
  //#region src/example.ts
2
2
  const example = {
3
- id: "saas-boilerplate",
4
- title: "SaaS Boilerplate",
5
- summary: "Multi-tenant SaaS foundation with orgs, projects, settings, billing usage, and RBAC.",
6
- tags: [
7
- "saas",
8
- "multi-tenant",
9
- "billing",
10
- "rbac"
11
- ],
12
- kind: "template",
13
- visibility: "public",
3
+ meta: {
4
+ key: "saas-boilerplate",
5
+ version: "1.0.0",
6
+ title: "SaaS Boilerplate",
7
+ description: "Multi-tenant SaaS foundation with orgs, projects, settings, billing usage, and RBAC.",
8
+ kind: "template",
9
+ visibility: "public",
10
+ stability: "experimental",
11
+ owners: ["@platform.core"],
12
+ tags: [
13
+ "saas",
14
+ "multi-tenant",
15
+ "billing",
16
+ "rbac"
17
+ ]
18
+ },
14
19
  docs: { rootDocId: "docs.examples.saas-boilerplate" },
15
20
  entrypoints: {
16
21
  packageName: "@contractspec/example.saas-boilerplate",
@@ -1 +1 @@
1
- {"version":3,"file":"example.js","names":[],"sources":["../src/example.ts"],"sourcesContent":["const example = {\n id: 'saas-boilerplate',\n title: 'SaaS Boilerplate',\n summary:\n 'Multi-tenant SaaS foundation with orgs, projects, settings, billing usage, and RBAC.',\n tags: ['saas', 'multi-tenant', 'billing', 'rbac'],\n kind: 'template',\n visibility: 'public',\n docs: {\n rootDocId: 'docs.examples.saas-boilerplate',\n },\n entrypoints: {\n packageName: '@contractspec/example.saas-boilerplate',\n feature: './feature',\n contracts: './contracts',\n presentations: './presentations',\n handlers: './handlers',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: {\n enabled: true,\n modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'],\n },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n} as const;\n\nexport default example;\n"],"mappings":";AAAA,MAAM,UAAU;CACd,IAAI;CACJ,OAAO;CACP,SACE;CACF,MAAM;EAAC;EAAQ;EAAgB;EAAW;EAAO;CACjD,MAAM;CACN,YAAY;CACZ,MAAM,EACJ,WAAW,kCACZ;CACD,aAAa;EACX,aAAa;EACb,SAAS;EACT,WAAW;EACX,eAAe;EACf,UAAU;EACV,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GACP,SAAS;GACT,OAAO;IAAC;IAAc;IAAS;IAAW;IAAY;IAAY;GACnE;EACD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
1
+ {"version":3,"file":"example.js","names":["example: ExampleSpec"],"sources":["../src/example.ts"],"sourcesContent":["import type { ExampleSpec } from '@contractspec/lib.contracts';\n\nconst example: ExampleSpec = {\n meta: {\n key: 'saas-boilerplate',\n version: '1.0.0',\n title: 'SaaS Boilerplate',\n description:\n 'Multi-tenant SaaS foundation with orgs, projects, settings, billing usage, and RBAC.',\n kind: 'template',\n visibility: 'public',\n stability: 'experimental',\n owners: ['@platform.core'],\n tags: ['saas', 'multi-tenant', 'billing', 'rbac'],\n },\n docs: {\n rootDocId: 'docs.examples.saas-boilerplate',\n },\n entrypoints: {\n packageName: '@contractspec/example.saas-boilerplate',\n feature: './feature',\n contracts: './contracts',\n presentations: './presentations',\n handlers: './handlers',\n docs: './docs',\n },\n surfaces: {\n templates: true,\n sandbox: {\n enabled: true,\n modes: ['playground', 'specs', 'builder', 'markdown', 'evolution'],\n },\n studio: { enabled: true, installable: true },\n mcp: { enabled: true },\n },\n};\n\nexport default example;\n"],"mappings":";AAEA,MAAMA,UAAuB;CAC3B,MAAM;EACJ,KAAK;EACL,SAAS;EACT,OAAO;EACP,aACE;EACF,MAAM;EACN,YAAY;EACZ,WAAW;EACX,QAAQ,CAAC,iBAAiB;EAC1B,MAAM;GAAC;GAAQ;GAAgB;GAAW;GAAO;EAClD;CACD,MAAM,EACJ,WAAW,kCACZ;CACD,aAAa;EACX,aAAa;EACb,SAAS;EACT,WAAW;EACX,eAAe;EACf,UAAU;EACV,MAAM;EACP;CACD,UAAU;EACR,WAAW;EACX,SAAS;GACP,SAAS;GACT,OAAO;IAAC;IAAc;IAAS;IAAW;IAAY;IAAY;GACnE;EACD,QAAQ;GAAE,SAAS;GAAM,aAAa;GAAM;EAC5C,KAAK,EAAE,SAAS,MAAM;EACvB;CACF;AAED,sBAAe"}
@@ -1,39 +1,39 @@
1
- import * as _contractspec_lib_schema161 from "@contractspec/lib.schema";
1
+ import * as _contractspec_lib_schema147 from "@contractspec/lib.schema";
2
2
 
3
3
  //#region src/project/project.entity.d.ts
4
4
  /**
5
5
  * Project status enum for entities.
6
6
  */
7
- declare const ProjectStatusEnum: _contractspec_lib_schema161.EntityEnumDef;
7
+ declare const ProjectStatusEnum: _contractspec_lib_schema147.EntityEnumDef;
8
8
  /**
9
9
  * Project entity - team-scoped work container.
10
10
  */
11
- declare const ProjectEntity: _contractspec_lib_schema161.EntitySpec<{
12
- id: _contractspec_lib_schema161.EntityScalarField;
13
- name: _contractspec_lib_schema161.EntityScalarField;
14
- description: _contractspec_lib_schema161.EntityScalarField;
15
- slug: _contractspec_lib_schema161.EntityScalarField;
16
- organizationId: _contractspec_lib_schema161.EntityScalarField;
17
- createdBy: _contractspec_lib_schema161.EntityScalarField;
18
- status: _contractspec_lib_schema161.EntityEnumField;
19
- isPublic: _contractspec_lib_schema161.EntityScalarField;
20
- settings: _contractspec_lib_schema161.EntityScalarField;
21
- tags: _contractspec_lib_schema161.EntityScalarField;
22
- metadata: _contractspec_lib_schema161.EntityScalarField;
23
- createdAt: _contractspec_lib_schema161.EntityScalarField;
24
- updatedAt: _contractspec_lib_schema161.EntityScalarField;
25
- archivedAt: _contractspec_lib_schema161.EntityScalarField;
11
+ declare const ProjectEntity: _contractspec_lib_schema147.EntitySpec<{
12
+ id: _contractspec_lib_schema147.EntityScalarField;
13
+ name: _contractspec_lib_schema147.EntityScalarField;
14
+ description: _contractspec_lib_schema147.EntityScalarField;
15
+ slug: _contractspec_lib_schema147.EntityScalarField;
16
+ organizationId: _contractspec_lib_schema147.EntityScalarField;
17
+ createdBy: _contractspec_lib_schema147.EntityScalarField;
18
+ status: _contractspec_lib_schema147.EntityEnumField;
19
+ isPublic: _contractspec_lib_schema147.EntityScalarField;
20
+ settings: _contractspec_lib_schema147.EntityScalarField;
21
+ tags: _contractspec_lib_schema147.EntityScalarField;
22
+ metadata: _contractspec_lib_schema147.EntityScalarField;
23
+ createdAt: _contractspec_lib_schema147.EntityScalarField;
24
+ updatedAt: _contractspec_lib_schema147.EntityScalarField;
25
+ archivedAt: _contractspec_lib_schema147.EntityScalarField;
26
26
  }>;
27
27
  /**
28
28
  * ProjectMember entity - project-level access.
29
29
  */
30
- declare const ProjectMemberEntity: _contractspec_lib_schema161.EntitySpec<{
31
- id: _contractspec_lib_schema161.EntityScalarField;
32
- projectId: _contractspec_lib_schema161.EntityScalarField;
33
- userId: _contractspec_lib_schema161.EntityScalarField;
34
- role: _contractspec_lib_schema161.EntityScalarField;
35
- addedBy: _contractspec_lib_schema161.EntityScalarField;
36
- createdAt: _contractspec_lib_schema161.EntityScalarField;
30
+ declare const ProjectMemberEntity: _contractspec_lib_schema147.EntitySpec<{
31
+ id: _contractspec_lib_schema147.EntityScalarField;
32
+ projectId: _contractspec_lib_schema147.EntityScalarField;
33
+ userId: _contractspec_lib_schema147.EntityScalarField;
34
+ role: _contractspec_lib_schema147.EntityScalarField;
35
+ addedBy: _contractspec_lib_schema147.EntityScalarField;
36
+ createdAt: _contractspec_lib_schema147.EntityScalarField;
37
37
  }>;
38
38
  //#endregion
39
39
  export { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum };
@@ -1,4 +1,4 @@
1
- import * as _contractspec_lib_schema184 from "@contractspec/lib.schema";
1
+ import * as _contractspec_lib_schema170 from "@contractspec/lib.schema";
2
2
 
3
3
  //#region src/project/project.enum.d.ts
4
4
 
@@ -6,11 +6,11 @@ import * as _contractspec_lib_schema184 from "@contractspec/lib.schema";
6
6
  * Project status enum for contract schemas.
7
7
  * Note: Entity enum is defined separately in project.entity.ts
8
8
  */
9
- declare const ProjectStatusSchemaEnum: _contractspec_lib_schema184.EnumType<[string, string, string, string]>;
9
+ declare const ProjectStatusSchemaEnum: _contractspec_lib_schema170.EnumType<[string, string, string, string]>;
10
10
  /**
11
11
  * Project status filter enum (includes 'all' option).
12
12
  */
13
- declare const ProjectStatusFilterEnum: _contractspec_lib_schema184.EnumType<[string, string, string, string]>;
13
+ declare const ProjectStatusFilterEnum: _contractspec_lib_schema170.EnumType<[string, string, string, string]>;
14
14
  //#endregion
15
15
  export { ProjectStatusFilterEnum, ProjectStatusSchemaEnum };
16
16
  //# sourceMappingURL=project.enum.d.ts.map