@contractspec/example.saas-boilerplate 1.44.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.
- package/.turbo/turbo-build$colon$bundle.log +113 -0
- package/.turbo/turbo-build.log +114 -0
- package/CHANGELOG.md +246 -0
- package/LICENSE +21 -0
- package/README.md +156 -0
- package/dist/billing/billing.entity.d.ts +61 -0
- package/dist/billing/billing.entity.d.ts.map +1 -0
- package/dist/billing/billing.entity.js +122 -0
- package/dist/billing/billing.entity.js.map +1 -0
- package/dist/billing/billing.enum.d.ts +16 -0
- package/dist/billing/billing.enum.d.ts.map +1 -0
- package/dist/billing/billing.enum.js +27 -0
- package/dist/billing/billing.enum.js.map +1 -0
- package/dist/billing/billing.event.d.ts +86 -0
- package/dist/billing/billing.event.d.ts.map +1 -0
- package/dist/billing/billing.event.js +153 -0
- package/dist/billing/billing.event.js.map +1 -0
- package/dist/billing/billing.handler.d.ts +82 -0
- package/dist/billing/billing.handler.d.ts.map +1 -0
- package/dist/billing/billing.handler.js +58 -0
- package/dist/billing/billing.handler.js.map +1 -0
- package/dist/billing/billing.operations.d.ts +166 -0
- package/dist/billing/billing.operations.d.ts.map +1 -0
- package/dist/billing/billing.operations.js +181 -0
- package/dist/billing/billing.operations.js.map +1 -0
- package/dist/billing/billing.presentation.d.ts +15 -0
- package/dist/billing/billing.presentation.d.ts.map +1 -0
- package/dist/billing/billing.presentation.js +59 -0
- package/dist/billing/billing.presentation.js.map +1 -0
- package/dist/billing/billing.schema.d.ts +201 -0
- package/dist/billing/billing.schema.d.ts.map +1 -0
- package/dist/billing/billing.schema.js +214 -0
- package/dist/billing/billing.schema.js.map +1 -0
- package/dist/billing/index.d.ts +8 -0
- package/dist/billing/index.js +9 -0
- package/dist/dashboard/dashboard.presentation.d.ts +15 -0
- package/dist/dashboard/dashboard.presentation.d.ts.map +1 -0
- package/dist/dashboard/dashboard.presentation.js +55 -0
- package/dist/dashboard/dashboard.presentation.js.map +1 -0
- package/dist/dashboard/index.d.ts +2 -0
- package/dist/dashboard/index.js +3 -0
- package/dist/docs/index.d.ts +1 -0
- package/dist/docs/index.js +1 -0
- package/dist/docs/saas-boilerplate.docblock.d.ts +1 -0
- package/dist/docs/saas-boilerplate.docblock.js +100 -0
- package/dist/docs/saas-boilerplate.docblock.js.map +1 -0
- package/dist/example.d.ts +37 -0
- package/dist/example.d.ts.map +1 -0
- package/dist/example.js +46 -0
- package/dist/example.js.map +1 -0
- package/dist/handlers/index.d.ts +3 -0
- package/dist/handlers/index.js +4 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/presentations/index.d.ts +17 -0
- package/dist/presentations/index.d.ts.map +1 -0
- package/dist/presentations/index.js +17 -0
- package/dist/presentations/index.js.map +1 -0
- package/dist/project/index.d.ts +8 -0
- package/dist/project/index.js +9 -0
- package/dist/project/project.entity.d.ts +40 -0
- package/dist/project/project.entity.d.ts.map +1 -0
- package/dist/project/project.entity.js +85 -0
- package/dist/project/project.entity.js.map +1 -0
- package/dist/project/project.enum.d.ts +16 -0
- package/dist/project/project.enum.d.ts.map +1 -0
- package/dist/project/project.enum.js +26 -0
- package/dist/project/project.enum.js.map +1 -0
- package/dist/project/project.event.d.ts +92 -0
- package/dist/project/project.event.d.ts.map +1 -0
- package/dist/project/project.event.js +165 -0
- package/dist/project/project.event.js.map +1 -0
- package/dist/project/project.handler.d.ts +72 -0
- package/dist/project/project.handler.d.ts.map +1 -0
- package/dist/project/project.handler.js +82 -0
- package/dist/project/project.handler.js.map +1 -0
- package/dist/project/project.operations.d.ts +419 -0
- package/dist/project/project.operations.d.ts.map +1 -0
- package/dist/project/project.operations.js +260 -0
- package/dist/project/project.operations.js.map +1 -0
- package/dist/project/project.presentation.d.ts +15 -0
- package/dist/project/project.presentation.d.ts.map +1 -0
- package/dist/project/project.presentation.js +65 -0
- package/dist/project/project.presentation.js.map +1 -0
- package/dist/project/project.schema.d.ts +235 -0
- package/dist/project/project.schema.d.ts.map +1 -0
- package/dist/project/project.schema.js +215 -0
- package/dist/project/project.schema.js.map +1 -0
- package/dist/saas-boilerplate.feature.d.ts +12 -0
- package/dist/saas-boilerplate.feature.d.ts.map +1 -0
- package/dist/saas-boilerplate.feature.js +201 -0
- package/dist/saas-boilerplate.feature.js.map +1 -0
- package/dist/settings/index.d.ts +3 -0
- package/dist/settings/index.js +4 -0
- package/dist/settings/settings.entity.d.ts +37 -0
- package/dist/settings/settings.entity.d.ts.map +1 -0
- package/dist/settings/settings.entity.js +78 -0
- package/dist/settings/settings.entity.js.map +1 -0
- package/dist/settings/settings.enum.d.ts +10 -0
- package/dist/settings/settings.enum.d.ts.map +1 -0
- package/dist/settings/settings.enum.js +21 -0
- package/dist/settings/settings.enum.js.map +1 -0
- package/dist/shared/mock-data.d.ts +86 -0
- package/dist/shared/mock-data.d.ts.map +1 -0
- package/dist/shared/mock-data.js +138 -0
- package/dist/shared/mock-data.js.map +1 -0
- package/example.ts +1 -0
- package/package.json +113 -0
- package/src/billing/billing.entity.ts +158 -0
- package/src/billing/billing.enum.ts +23 -0
- package/src/billing/billing.event.ts +108 -0
- package/src/billing/billing.handler.ts +137 -0
- package/src/billing/billing.operations.ts +187 -0
- package/src/billing/billing.presentation.ts +57 -0
- package/src/billing/billing.schema.ts +133 -0
- package/src/billing/index.ts +64 -0
- package/src/dashboard/dashboard.presentation.ts +57 -0
- package/src/dashboard/index.ts +8 -0
- package/src/docs/index.ts +1 -0
- package/src/docs/saas-boilerplate.docblock.ts +98 -0
- package/src/example.ts +31 -0
- package/src/handlers/index.ts +20 -0
- package/src/index.ts +71 -0
- package/src/presentations/index.ts +36 -0
- package/src/project/index.ts +66 -0
- package/src/project/project.entity.ts +93 -0
- package/src/project/project.enum.ts +22 -0
- package/src/project/project.event.ts +128 -0
- package/src/project/project.handler.ts +168 -0
- package/src/project/project.operations.ts +272 -0
- package/src/project/project.presentation.ts +59 -0
- package/src/project/project.schema.ts +147 -0
- package/src/saas-boilerplate.feature.ts +109 -0
- package/src/settings/index.ts +9 -0
- package/src/settings/settings.entity.ts +89 -0
- package/src/settings/settings.enum.ts +11 -0
- package/src/shared/mock-data.ts +110 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/tsdown.config.js +7 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import example_default from "./example.js";
|
|
2
|
+
import { FeatureAccessReasonEnum, SubscriptionStatusSchemaEnum } from "./billing/billing.enum.js";
|
|
3
|
+
import { CheckFeatureAccessInputModel, CheckFeatureAccessOutputModel, GetUsageSummaryInputModel, GetUsageSummaryOutputModel, RecordUsageInputModel, RecordUsageOutputModel, SubscriptionModel, UsageRecordedPayloadModel, UsageSummaryModel } from "./billing/billing.schema.js";
|
|
4
|
+
import { CheckFeatureAccessContract, GetSubscriptionContract, GetUsageSummaryContract, RecordUsageContract } from "./billing/billing.operations.js";
|
|
5
|
+
import { SubscriptionChangedEvent, UsageLimitReachedEvent, UsageRecordedEvent } from "./billing/billing.event.js";
|
|
6
|
+
import { BillingUsageEntity, SubscriptionEntity, SubscriptionStatusEnum, UsageLimitEntity } from "./billing/billing.entity.js";
|
|
7
|
+
import { SubscriptionPresentation, UsageDashboardPresentation } from "./billing/billing.presentation.js";
|
|
8
|
+
import { mockCheckFeatureAccessHandler, mockGetSubscriptionHandler, mockGetUsageSummaryHandler, mockRecordUsageHandler } from "./billing/billing.handler.js";
|
|
9
|
+
import "./billing/index.js";
|
|
10
|
+
import { ProjectStatusFilterEnum, ProjectStatusSchemaEnum } from "./project/project.enum.js";
|
|
11
|
+
import { CreateProjectInputModel, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectInputModel, ListProjectsInputModel, ListProjectsOutputModel, ProjectDeletedPayloadModel, ProjectModel, UpdateProjectInputModel } from "./project/project.schema.js";
|
|
12
|
+
import { CreateProjectContract, DeleteProjectContract, GetProjectContract, ListProjectsContract, UpdateProjectContract } from "./project/project.operations.js";
|
|
13
|
+
import { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent } from "./project/project.event.js";
|
|
14
|
+
import { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum } from "./project/project.entity.js";
|
|
15
|
+
import { ProjectDetailPresentation, ProjectListPresentation } from "./project/project.presentation.js";
|
|
16
|
+
import { mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler } from "./project/project.handler.js";
|
|
17
|
+
import "./project/index.js";
|
|
18
|
+
import { SettingsScopeEnum } from "./settings/settings.enum.js";
|
|
19
|
+
import { FeatureFlagEntity, SettingsEntity } from "./settings/settings.entity.js";
|
|
20
|
+
import "./settings/index.js";
|
|
21
|
+
import { SaasDashboardPresentation, SettingsPanelPresentation } from "./dashboard/dashboard.presentation.js";
|
|
22
|
+
import "./dashboard/index.js";
|
|
23
|
+
import { SaasBoilerplateFeature } from "./saas-boilerplate.feature.js";
|
|
24
|
+
import "./docs/index.js";
|
|
25
|
+
import { identityRbacSchemaContribution } from "@contractspec/lib.identity-rbac";
|
|
26
|
+
import { jobsSchemaContribution } from "@contractspec/lib.jobs";
|
|
27
|
+
import { auditTrailSchemaContribution } from "@contractspec/module.audit-trail";
|
|
28
|
+
import { notificationsSchemaContribution } from "@contractspec/module.notifications";
|
|
29
|
+
|
|
30
|
+
//#region src/index.ts
|
|
31
|
+
/**
|
|
32
|
+
* SaaS boilerplate schema contribution.
|
|
33
|
+
*/
|
|
34
|
+
const saasBoilerplateSchemaContribution = {
|
|
35
|
+
moduleId: "@contractspec/example.saas-boilerplate",
|
|
36
|
+
entities: [
|
|
37
|
+
ProjectEntity,
|
|
38
|
+
ProjectMemberEntity,
|
|
39
|
+
SettingsEntity,
|
|
40
|
+
FeatureFlagEntity,
|
|
41
|
+
SubscriptionEntity,
|
|
42
|
+
BillingUsageEntity,
|
|
43
|
+
UsageLimitEntity
|
|
44
|
+
],
|
|
45
|
+
enums: [
|
|
46
|
+
ProjectStatusEnum,
|
|
47
|
+
SettingsScopeEnum,
|
|
48
|
+
SubscriptionStatusEnum
|
|
49
|
+
]
|
|
50
|
+
};
|
|
51
|
+
/**
|
|
52
|
+
* Complete schema composition for SaaS Boilerplate.
|
|
53
|
+
* Use with `database schema:compose` to generate Prisma schema.
|
|
54
|
+
*/
|
|
55
|
+
const schemaComposition = {
|
|
56
|
+
modules: [
|
|
57
|
+
identityRbacSchemaContribution,
|
|
58
|
+
jobsSchemaContribution,
|
|
59
|
+
auditTrailSchemaContribution,
|
|
60
|
+
notificationsSchemaContribution,
|
|
61
|
+
saasBoilerplateSchemaContribution
|
|
62
|
+
],
|
|
63
|
+
provider: "postgresql",
|
|
64
|
+
outputPath: "./prisma/schema/generated.prisma"
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
//#endregion
|
|
68
|
+
export { BillingUsageEntity, CheckFeatureAccessContract, CheckFeatureAccessInputModel, CheckFeatureAccessOutputModel, CreateProjectContract, CreateProjectInputModel, DeleteProjectContract, DeleteProjectInputModel, DeleteProjectOutputModel, FeatureAccessReasonEnum, FeatureFlagEntity, GetProjectContract, GetProjectInputModel, GetSubscriptionContract, GetUsageSummaryContract, GetUsageSummaryInputModel, GetUsageSummaryOutputModel, ListProjectsContract, ListProjectsInputModel, ListProjectsOutputModel, ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectDeletedPayloadModel, ProjectDetailPresentation, ProjectEntity, ProjectListPresentation, ProjectMemberEntity, ProjectModel, ProjectStatusEnum, ProjectStatusFilterEnum, ProjectStatusSchemaEnum, ProjectUpdatedEvent, RecordUsageContract, RecordUsageInputModel, RecordUsageOutputModel, SaasBoilerplateFeature, SaasDashboardPresentation, SettingsEntity, SettingsPanelPresentation, SettingsScopeEnum, SubscriptionChangedEvent, SubscriptionEntity, SubscriptionModel, SubscriptionPresentation, SubscriptionStatusEnum, SubscriptionStatusSchemaEnum, UpdateProjectContract, UpdateProjectInputModel, UsageDashboardPresentation, UsageLimitEntity, UsageLimitReachedEvent, UsageRecordedEvent, UsageRecordedPayloadModel, UsageSummaryModel, example_default as example, mockCheckFeatureAccessHandler, mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockGetSubscriptionHandler, mockGetUsageSummaryHandler, mockListProjectsHandler, mockRecordUsageHandler, mockUpdateProjectHandler, saasBoilerplateSchemaContribution, schemaComposition };
|
|
69
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["saasBoilerplateSchemaContribution: ModuleSchemaContribution"],"sources":["../src/index.ts"],"sourcesContent":["// SaaS Boilerplate Example\n// Demonstrates ContractSpec principles for a complete SaaS application\n\n// Export all domain modules\nexport * from './billing';\nexport * from './project';\nexport * from './settings';\nexport * from './dashboard';\n\n// Export feature and example metadata\nexport * from './saas-boilerplate.feature';\nexport { default as example } from './example';\n\n// Import docs for registration\nimport './docs';\n\n// Schema composition configuration\nimport { identityRbacSchemaContribution } from '@contractspec/lib.identity-rbac';\nimport { jobsSchemaContribution } from '@contractspec/lib.jobs';\nimport { auditTrailSchemaContribution } from '@contractspec/module.audit-trail';\nimport { notificationsSchemaContribution } from '@contractspec/module.notifications';\nimport type { ModuleSchemaContribution } from '@contractspec/lib.schema';\nimport {\n ProjectEntity,\n ProjectMemberEntity,\n ProjectStatusEnum,\n} from './project/project.entity';\nimport {\n SettingsEntity,\n FeatureFlagEntity,\n SettingsScopeEnum,\n} from './settings';\nimport {\n SubscriptionEntity,\n BillingUsageEntity,\n UsageLimitEntity,\n SubscriptionStatusEnum,\n} from './billing/billing.entity';\n\n/**\n * SaaS boilerplate schema contribution.\n */\nexport const saasBoilerplateSchemaContribution: ModuleSchemaContribution = {\n moduleId: '@contractspec/example.saas-boilerplate',\n entities: [\n ProjectEntity,\n ProjectMemberEntity,\n SettingsEntity,\n FeatureFlagEntity,\n SubscriptionEntity,\n BillingUsageEntity,\n UsageLimitEntity,\n ],\n enums: [ProjectStatusEnum, SettingsScopeEnum, SubscriptionStatusEnum],\n};\n\n/**\n * Complete schema composition for SaaS Boilerplate.\n * Use with `database schema:compose` to generate Prisma schema.\n */\nexport const schemaComposition = {\n modules: [\n identityRbacSchemaContribution,\n jobsSchemaContribution,\n auditTrailSchemaContribution,\n notificationsSchemaContribution,\n saasBoilerplateSchemaContribution,\n ],\n provider: 'postgresql' as const,\n outputPath: './prisma/schema/generated.prisma',\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA0CA,MAAaA,oCAA8D;CACzE,UAAU;CACV,UAAU;EACR;EACA;EACA;EACA;EACA;EACA;EACA;EACD;CACD,OAAO;EAAC;EAAmB;EAAmB;EAAuB;CACtE;;;;;AAMD,MAAa,oBAAoB;CAC/B,SAAS;EACP;EACA;EACA;EACA;EACA;EACD;CACD,UAAU;CACV,YAAY;CACb"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SubscriptionPresentation, UsageDashboardPresentation } from "../billing/billing.presentation.js";
|
|
2
|
+
import { SaasDashboardPresentation, SettingsPanelPresentation } from "../dashboard/dashboard.presentation.js";
|
|
3
|
+
import { ProjectDetailPresentation, ProjectListPresentation } from "../project/project.presentation.js";
|
|
4
|
+
|
|
5
|
+
//#region src/presentations/index.d.ts
|
|
6
|
+
|
|
7
|
+
declare const SaasBoilerplatePresentations: {
|
|
8
|
+
SubscriptionPresentation: undefined;
|
|
9
|
+
UsageDashboardPresentation: undefined;
|
|
10
|
+
ProjectListPresentation: undefined;
|
|
11
|
+
ProjectDetailPresentation: undefined;
|
|
12
|
+
SaasDashboardPresentation: undefined;
|
|
13
|
+
SettingsPanelPresentation: undefined;
|
|
14
|
+
};
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ProjectDetailPresentation, ProjectListPresentation, SaasBoilerplatePresentations, SaasDashboardPresentation, SettingsPanelPresentation, SubscriptionPresentation, UsageDashboardPresentation };
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../../src/presentations/index.ts"],"sourcesContent":[],"mappings":";;;;;;cAuBa"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { SubscriptionPresentation, UsageDashboardPresentation } from "../billing/billing.presentation.js";
|
|
2
|
+
import { ProjectDetailPresentation, ProjectListPresentation } from "../project/project.presentation.js";
|
|
3
|
+
import { SaasDashboardPresentation, SettingsPanelPresentation } from "../dashboard/dashboard.presentation.js";
|
|
4
|
+
|
|
5
|
+
//#region src/presentations/index.ts
|
|
6
|
+
const SaasBoilerplatePresentations = {
|
|
7
|
+
SubscriptionPresentation: void 0,
|
|
8
|
+
UsageDashboardPresentation: void 0,
|
|
9
|
+
ProjectListPresentation: void 0,
|
|
10
|
+
ProjectDetailPresentation: void 0,
|
|
11
|
+
SaasDashboardPresentation: void 0,
|
|
12
|
+
SettingsPanelPresentation: void 0
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { ProjectDetailPresentation, ProjectListPresentation, SaasBoilerplatePresentations, SaasDashboardPresentation, SettingsPanelPresentation, SubscriptionPresentation, UsageDashboardPresentation };
|
|
17
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":[],"sources":["../../src/presentations/index.ts"],"sourcesContent":["/**\n * SaaS Boilerplate Presentations - re-exports from domain modules for backward compatibility.\n */\n\n// Billing presentations\nexport {\n SubscriptionPresentation,\n UsageDashboardPresentation,\n} from '../billing/billing.presentation';\n\n// Project presentations\nexport {\n ProjectListPresentation,\n ProjectDetailPresentation,\n} from '../project/project.presentation';\n\n// Dashboard presentations\nexport {\n SaasDashboardPresentation,\n SettingsPanelPresentation,\n} from '../dashboard/dashboard.presentation';\n\n// All presentations collection\nexport const SaasBoilerplatePresentations = {\n // Billing\n SubscriptionPresentation: undefined,\n UsageDashboardPresentation: undefined,\n\n // Project\n ProjectListPresentation: undefined,\n ProjectDetailPresentation: undefined,\n\n // Dashboard\n SaasDashboardPresentation: undefined,\n SettingsPanelPresentation: undefined,\n};\n"],"mappings":";;;;;AAuBA,MAAa,+BAA+B;CAE1C,0BAA0B;CAC1B,4BAA4B;CAG5B,yBAAyB;CACzB,2BAA2B;CAG3B,2BAA2B;CAC3B,2BAA2B;CAC5B"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CreateProjectInput, ListProjectsInput, ListProjectsOutput, Project, UpdateProjectInput, mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler } from "./project.handler.js";
|
|
2
|
+
import { ProjectStatusFilterEnum, ProjectStatusSchemaEnum } from "./project.enum.js";
|
|
3
|
+
import { CreateProjectInputModel, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectInputModel, ListProjectsInputModel, ListProjectsOutputModel, ProjectDeletedPayloadModel, ProjectModel, UpdateProjectInputModel } from "./project.schema.js";
|
|
4
|
+
import { CreateProjectContract, DeleteProjectContract, GetProjectContract, ListProjectsContract, UpdateProjectContract } from "./project.operations.js";
|
|
5
|
+
import { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent } from "./project.event.js";
|
|
6
|
+
import { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum } from "./project.entity.js";
|
|
7
|
+
import { ProjectDetailPresentation, ProjectListPresentation } from "./project.presentation.js";
|
|
8
|
+
export { CreateProjectContract, type CreateProjectInput, CreateProjectInputModel, DeleteProjectContract, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectContract, GetProjectInputModel, ListProjectsContract, type ListProjectsInput, ListProjectsInputModel, type ListProjectsOutput, ListProjectsOutputModel, type Project, ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectDeletedPayloadModel, ProjectDetailPresentation, ProjectEntity, ProjectListPresentation, ProjectMemberEntity, ProjectModel, ProjectStatusEnum, ProjectStatusFilterEnum, ProjectStatusSchemaEnum, ProjectUpdatedEvent, UpdateProjectContract, type UpdateProjectInput, UpdateProjectInputModel, mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler };
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ProjectStatusFilterEnum, ProjectStatusSchemaEnum } from "./project.enum.js";
|
|
2
|
+
import { CreateProjectInputModel, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectInputModel, ListProjectsInputModel, ListProjectsOutputModel, ProjectDeletedPayloadModel, ProjectModel, UpdateProjectInputModel } from "./project.schema.js";
|
|
3
|
+
import { CreateProjectContract, DeleteProjectContract, GetProjectContract, ListProjectsContract, UpdateProjectContract } from "./project.operations.js";
|
|
4
|
+
import { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent } from "./project.event.js";
|
|
5
|
+
import { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum } from "./project.entity.js";
|
|
6
|
+
import { ProjectDetailPresentation, ProjectListPresentation } from "./project.presentation.js";
|
|
7
|
+
import { mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler } from "./project.handler.js";
|
|
8
|
+
|
|
9
|
+
export { CreateProjectContract, CreateProjectInputModel, DeleteProjectContract, DeleteProjectInputModel, DeleteProjectOutputModel, GetProjectContract, GetProjectInputModel, ListProjectsContract, ListProjectsInputModel, ListProjectsOutputModel, ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectDeletedPayloadModel, ProjectDetailPresentation, ProjectEntity, ProjectListPresentation, ProjectMemberEntity, ProjectModel, ProjectStatusEnum, ProjectStatusFilterEnum, ProjectStatusSchemaEnum, ProjectUpdatedEvent, UpdateProjectContract, UpdateProjectInputModel, mockCreateProjectHandler, mockDeleteProjectHandler, mockGetProjectHandler, mockListProjectsHandler, mockUpdateProjectHandler };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema147 from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/project/project.entity.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Project status enum for entities.
|
|
6
|
+
*/
|
|
7
|
+
declare const ProjectStatusEnum: _contractspec_lib_schema147.EntityEnumDef;
|
|
8
|
+
/**
|
|
9
|
+
* Project entity - team-scoped work container.
|
|
10
|
+
*/
|
|
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
|
+
}>;
|
|
27
|
+
/**
|
|
28
|
+
* ProjectMember entity - project-level access.
|
|
29
|
+
*/
|
|
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
|
+
}>;
|
|
38
|
+
//#endregion
|
|
39
|
+
export { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum };
|
|
40
|
+
//# sourceMappingURL=project.entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.entity.d.ts","names":[],"sources":["../../src/project/project.entity.ts"],"sourcesContent":[],"mappings":";;;;;;AAUa,cAAA,iBAKX,EAAA,2BAAA,CAL4B,aAK5B;AAKF;;;cAAa,2CAAa;MAmDxB,2BAAA,CAAA;;;;;;;;;;;0DAnDwB;EAAA,SAAA,+CAAA;EAwDb,UAAA,+CAgBX;CAAA,CAAA;;;;cAhBW,iDAAmB;MAgB9B,2BAAA,CAAA;0DAhB8B;EAAA,MAAA,+CAAA"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
import { defineEntity, defineEntityEnum, field, index } from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/project/project.entity.ts
|
|
4
|
+
/**
|
|
5
|
+
* Project status enum for entities.
|
|
6
|
+
*/
|
|
7
|
+
const ProjectStatusEnum = defineEntityEnum({
|
|
8
|
+
name: "ProjectStatus",
|
|
9
|
+
values: [
|
|
10
|
+
"DRAFT",
|
|
11
|
+
"ACTIVE",
|
|
12
|
+
"ARCHIVED",
|
|
13
|
+
"DELETED"
|
|
14
|
+
],
|
|
15
|
+
schema: "saas_app",
|
|
16
|
+
description: "Status of a project."
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Project entity - team-scoped work container.
|
|
20
|
+
*/
|
|
21
|
+
const ProjectEntity = defineEntity({
|
|
22
|
+
name: "Project",
|
|
23
|
+
description: "A project belonging to an organization.",
|
|
24
|
+
schema: "saas_app",
|
|
25
|
+
map: "project",
|
|
26
|
+
fields: {
|
|
27
|
+
id: field.id({ description: "Unique project ID" }),
|
|
28
|
+
name: field.string({ description: "Project name" }),
|
|
29
|
+
description: field.string({
|
|
30
|
+
isOptional: true,
|
|
31
|
+
description: "Project description"
|
|
32
|
+
}),
|
|
33
|
+
slug: field.string({
|
|
34
|
+
isOptional: true,
|
|
35
|
+
description: "URL-friendly identifier"
|
|
36
|
+
}),
|
|
37
|
+
organizationId: field.foreignKey({ description: "Owning organization" }),
|
|
38
|
+
createdBy: field.foreignKey({ description: "User who created the project" }),
|
|
39
|
+
status: field.enum("ProjectStatus", { default: "DRAFT" }),
|
|
40
|
+
isPublic: field.boolean({
|
|
41
|
+
default: false,
|
|
42
|
+
description: "Whether project is publicly visible"
|
|
43
|
+
}),
|
|
44
|
+
settings: field.json({
|
|
45
|
+
isOptional: true,
|
|
46
|
+
description: "Project-specific settings"
|
|
47
|
+
}),
|
|
48
|
+
tags: field.string({
|
|
49
|
+
isArray: true,
|
|
50
|
+
description: "Project tags"
|
|
51
|
+
}),
|
|
52
|
+
metadata: field.json({ isOptional: true }),
|
|
53
|
+
createdAt: field.createdAt(),
|
|
54
|
+
updatedAt: field.updatedAt(),
|
|
55
|
+
archivedAt: field.dateTime({ isOptional: true })
|
|
56
|
+
},
|
|
57
|
+
indexes: [
|
|
58
|
+
index.on(["organizationId", "status"]),
|
|
59
|
+
index.on(["organizationId", "createdAt"]),
|
|
60
|
+
index.unique(["organizationId", "slug"])
|
|
61
|
+
],
|
|
62
|
+
enums: [ProjectStatusEnum]
|
|
63
|
+
});
|
|
64
|
+
/**
|
|
65
|
+
* ProjectMember entity - project-level access.
|
|
66
|
+
*/
|
|
67
|
+
const ProjectMemberEntity = defineEntity({
|
|
68
|
+
name: "ProjectMember",
|
|
69
|
+
description: "User access to a specific project.",
|
|
70
|
+
schema: "saas_app",
|
|
71
|
+
map: "project_member",
|
|
72
|
+
fields: {
|
|
73
|
+
id: field.id(),
|
|
74
|
+
projectId: field.foreignKey(),
|
|
75
|
+
userId: field.foreignKey(),
|
|
76
|
+
role: field.string({ description: "Role in project (owner, editor, viewer)" }),
|
|
77
|
+
addedBy: field.string({ isOptional: true }),
|
|
78
|
+
createdAt: field.createdAt()
|
|
79
|
+
},
|
|
80
|
+
indexes: [index.unique(["projectId", "userId"])]
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
//#endregion
|
|
84
|
+
export { ProjectEntity, ProjectMemberEntity, ProjectStatusEnum };
|
|
85
|
+
//# sourceMappingURL=project.entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.entity.js","names":[],"sources":["../../src/project/project.entity.ts"],"sourcesContent":["import {\n defineEntity,\n defineEntityEnum,\n field,\n index,\n} from '@contractspec/lib.schema';\n\n/**\n * Project status enum for entities.\n */\nexport const ProjectStatusEnum = defineEntityEnum({\n name: 'ProjectStatus',\n values: ['DRAFT', 'ACTIVE', 'ARCHIVED', 'DELETED'] as const,\n schema: 'saas_app',\n description: 'Status of a project.',\n});\n\n/**\n * Project entity - team-scoped work container.\n */\nexport const ProjectEntity = defineEntity({\n name: 'Project',\n description: 'A project belonging to an organization.',\n schema: 'saas_app',\n map: 'project',\n fields: {\n id: field.id({ description: 'Unique project ID' }),\n name: field.string({ description: 'Project name' }),\n description: field.string({\n isOptional: true,\n description: 'Project description',\n }),\n slug: field.string({\n isOptional: true,\n description: 'URL-friendly identifier',\n }),\n\n // Ownership\n organizationId: field.foreignKey({ description: 'Owning organization' }),\n createdBy: field.foreignKey({\n description: 'User who created the project',\n }),\n\n // Status\n status: field.enum('ProjectStatus', { default: 'DRAFT' }),\n\n // Settings\n isPublic: field.boolean({\n default: false,\n description: 'Whether project is publicly visible',\n }),\n settings: field.json({\n isOptional: true,\n description: 'Project-specific settings',\n }),\n\n // Metadata\n tags: field.string({ isArray: true, description: 'Project tags' }),\n metadata: field.json({ isOptional: true }),\n\n // Timestamps\n createdAt: field.createdAt(),\n updatedAt: field.updatedAt(),\n archivedAt: field.dateTime({ isOptional: true }),\n },\n indexes: [\n index.on(['organizationId', 'status']),\n index.on(['organizationId', 'createdAt']),\n index.unique(['organizationId', 'slug']),\n ],\n enums: [ProjectStatusEnum],\n});\n\n/**\n * ProjectMember entity - project-level access.\n */\nexport const ProjectMemberEntity = defineEntity({\n name: 'ProjectMember',\n description: 'User access to a specific project.',\n schema: 'saas_app',\n map: 'project_member',\n fields: {\n id: field.id(),\n projectId: field.foreignKey(),\n userId: field.foreignKey(),\n role: field.string({\n description: 'Role in project (owner, editor, viewer)',\n }),\n addedBy: field.string({ isOptional: true }),\n createdAt: field.createdAt(),\n },\n indexes: [index.unique(['projectId', 'userId'])],\n});\n"],"mappings":";;;;;;AAUA,MAAa,oBAAoB,iBAAiB;CAChD,MAAM;CACN,QAAQ;EAAC;EAAS;EAAU;EAAY;EAAU;CAClD,QAAQ;CACR,aAAa;CACd,CAAC;;;;AAKF,MAAa,gBAAgB,aAAa;CACxC,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAI,MAAM,GAAG,EAAE,aAAa,qBAAqB,CAAC;EAClD,MAAM,MAAM,OAAO,EAAE,aAAa,gBAAgB,CAAC;EACnD,aAAa,MAAM,OAAO;GACxB,YAAY;GACZ,aAAa;GACd,CAAC;EACF,MAAM,MAAM,OAAO;GACjB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,gBAAgB,MAAM,WAAW,EAAE,aAAa,uBAAuB,CAAC;EACxE,WAAW,MAAM,WAAW,EAC1B,aAAa,gCACd,CAAC;EAGF,QAAQ,MAAM,KAAK,iBAAiB,EAAE,SAAS,SAAS,CAAC;EAGzD,UAAU,MAAM,QAAQ;GACtB,SAAS;GACT,aAAa;GACd,CAAC;EACF,UAAU,MAAM,KAAK;GACnB,YAAY;GACZ,aAAa;GACd,CAAC;EAGF,MAAM,MAAM,OAAO;GAAE,SAAS;GAAM,aAAa;GAAgB,CAAC;EAClE,UAAU,MAAM,KAAK,EAAE,YAAY,MAAM,CAAC;EAG1C,WAAW,MAAM,WAAW;EAC5B,WAAW,MAAM,WAAW;EAC5B,YAAY,MAAM,SAAS,EAAE,YAAY,MAAM,CAAC;EACjD;CACD,SAAS;EACP,MAAM,GAAG,CAAC,kBAAkB,SAAS,CAAC;EACtC,MAAM,GAAG,CAAC,kBAAkB,YAAY,CAAC;EACzC,MAAM,OAAO,CAAC,kBAAkB,OAAO,CAAC;EACzC;CACD,OAAO,CAAC,kBAAkB;CAC3B,CAAC;;;;AAKF,MAAa,sBAAsB,aAAa;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;CACR,KAAK;CACL,QAAQ;EACN,IAAI,MAAM,IAAI;EACd,WAAW,MAAM,YAAY;EAC7B,QAAQ,MAAM,YAAY;EAC1B,MAAM,MAAM,OAAO,EACjB,aAAa,2CACd,CAAC;EACF,SAAS,MAAM,OAAO,EAAE,YAAY,MAAM,CAAC;EAC3C,WAAW,MAAM,WAAW;EAC7B;CACD,SAAS,CAAC,MAAM,OAAO,CAAC,aAAa,SAAS,CAAC,CAAC;CACjD,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema170 from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/project/project.enum.d.ts
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Project status enum for contract schemas.
|
|
7
|
+
* Note: Entity enum is defined separately in project.entity.ts
|
|
8
|
+
*/
|
|
9
|
+
declare const ProjectStatusSchemaEnum: _contractspec_lib_schema170.EnumType<[string, string, string, string]>;
|
|
10
|
+
/**
|
|
11
|
+
* Project status filter enum (includes 'all' option).
|
|
12
|
+
*/
|
|
13
|
+
declare const ProjectStatusFilterEnum: _contractspec_lib_schema170.EnumType<[string, string, string, string]>;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { ProjectStatusFilterEnum, ProjectStatusSchemaEnum };
|
|
16
|
+
//# sourceMappingURL=project.enum.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.enum.d.ts","names":[],"sources":["../../src/project/project.enum.ts"],"sourcesContent":[],"mappings":";;;;;;;AAMA;AAUa,cAVA,uBAeX,EAVA,2BAAA,CALkC,QAUA,CAAA,CAAA,MAAA,EAAA,MAAA,EAAA,MAAA,EAAA,MAAA,CAAA,CAAA;;;;cAAvB,yBAKX,2BAAA,CALkC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { defineEnum } from "@contractspec/lib.schema";
|
|
2
|
+
|
|
3
|
+
//#region src/project/project.enum.ts
|
|
4
|
+
/**
|
|
5
|
+
* Project status enum for contract schemas.
|
|
6
|
+
* Note: Entity enum is defined separately in project.entity.ts
|
|
7
|
+
*/
|
|
8
|
+
const ProjectStatusSchemaEnum = defineEnum("ProjectStatus", [
|
|
9
|
+
"DRAFT",
|
|
10
|
+
"ACTIVE",
|
|
11
|
+
"ARCHIVED",
|
|
12
|
+
"DELETED"
|
|
13
|
+
]);
|
|
14
|
+
/**
|
|
15
|
+
* Project status filter enum (includes 'all' option).
|
|
16
|
+
*/
|
|
17
|
+
const ProjectStatusFilterEnum = defineEnum("ProjectStatusFilter", [
|
|
18
|
+
"DRAFT",
|
|
19
|
+
"ACTIVE",
|
|
20
|
+
"ARCHIVED",
|
|
21
|
+
"all"
|
|
22
|
+
]);
|
|
23
|
+
|
|
24
|
+
//#endregion
|
|
25
|
+
export { ProjectStatusFilterEnum, ProjectStatusSchemaEnum };
|
|
26
|
+
//# sourceMappingURL=project.enum.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.enum.js","names":[],"sources":["../../src/project/project.enum.ts"],"sourcesContent":["import { defineEnum } from '@contractspec/lib.schema';\n\n/**\n * Project status enum for contract schemas.\n * Note: Entity enum is defined separately in project.entity.ts\n */\nexport const ProjectStatusSchemaEnum = defineEnum('ProjectStatus', [\n 'DRAFT',\n 'ACTIVE',\n 'ARCHIVED',\n 'DELETED',\n]);\n\n/**\n * Project status filter enum (includes 'all' option).\n */\nexport const ProjectStatusFilterEnum = defineEnum('ProjectStatusFilter', [\n 'DRAFT',\n 'ACTIVE',\n 'ARCHIVED',\n 'all',\n]);\n"],"mappings":";;;;;;;AAMA,MAAa,0BAA0B,WAAW,iBAAiB;CACjE;CACA;CACA;CACA;CACD,CAAC;;;;AAKF,MAAa,0BAA0B,WAAW,uBAAuB;CACvE;CACA;CACA;CACA;CACD,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import * as _contractspec_lib_schema172 from "@contractspec/lib.schema";
|
|
2
|
+
import * as _contractspec_lib_contracts6 from "@contractspec/lib.contracts";
|
|
3
|
+
|
|
4
|
+
//#region src/project/project.event.d.ts
|
|
5
|
+
/**
|
|
6
|
+
* Event: A new project has been created.
|
|
7
|
+
*/
|
|
8
|
+
declare const ProjectCreatedEvent: _contractspec_lib_contracts6.EventSpec<_contractspec_lib_schema172.SchemaModel<{
|
|
9
|
+
projectId: {
|
|
10
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
11
|
+
isOptional: false;
|
|
12
|
+
};
|
|
13
|
+
name: {
|
|
14
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
15
|
+
isOptional: false;
|
|
16
|
+
};
|
|
17
|
+
organizationId: {
|
|
18
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
19
|
+
isOptional: false;
|
|
20
|
+
};
|
|
21
|
+
createdBy: {
|
|
22
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
23
|
+
isOptional: false;
|
|
24
|
+
};
|
|
25
|
+
createdAt: {
|
|
26
|
+
type: _contractspec_lib_schema172.FieldType<Date, string>;
|
|
27
|
+
isOptional: false;
|
|
28
|
+
};
|
|
29
|
+
}>>;
|
|
30
|
+
/**
|
|
31
|
+
* Event: A project has been updated.
|
|
32
|
+
*/
|
|
33
|
+
declare const ProjectUpdatedEvent: _contractspec_lib_contracts6.EventSpec<_contractspec_lib_schema172.SchemaModel<{
|
|
34
|
+
projectId: {
|
|
35
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
36
|
+
isOptional: false;
|
|
37
|
+
};
|
|
38
|
+
updatedFields: {
|
|
39
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
40
|
+
isArray: true;
|
|
41
|
+
isOptional: false;
|
|
42
|
+
};
|
|
43
|
+
updatedBy: {
|
|
44
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
45
|
+
isOptional: false;
|
|
46
|
+
};
|
|
47
|
+
updatedAt: {
|
|
48
|
+
type: _contractspec_lib_schema172.FieldType<Date, string>;
|
|
49
|
+
isOptional: false;
|
|
50
|
+
};
|
|
51
|
+
}>>;
|
|
52
|
+
/**
|
|
53
|
+
* Event: A project has been deleted.
|
|
54
|
+
*/
|
|
55
|
+
declare const ProjectDeletedEvent: _contractspec_lib_contracts6.EventSpec<_contractspec_lib_schema172.SchemaModel<{
|
|
56
|
+
projectId: {
|
|
57
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
58
|
+
isOptional: false;
|
|
59
|
+
};
|
|
60
|
+
organizationId: {
|
|
61
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
62
|
+
isOptional: false;
|
|
63
|
+
};
|
|
64
|
+
deletedBy: {
|
|
65
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
66
|
+
isOptional: false;
|
|
67
|
+
};
|
|
68
|
+
deletedAt: {
|
|
69
|
+
type: _contractspec_lib_schema172.FieldType<Date, string>;
|
|
70
|
+
isOptional: false;
|
|
71
|
+
};
|
|
72
|
+
}>>;
|
|
73
|
+
/**
|
|
74
|
+
* Event: A project has been archived.
|
|
75
|
+
*/
|
|
76
|
+
declare const ProjectArchivedEvent: _contractspec_lib_contracts6.EventSpec<_contractspec_lib_schema172.SchemaModel<{
|
|
77
|
+
projectId: {
|
|
78
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
79
|
+
isOptional: false;
|
|
80
|
+
};
|
|
81
|
+
archivedBy: {
|
|
82
|
+
type: _contractspec_lib_schema172.FieldType<string, string>;
|
|
83
|
+
isOptional: false;
|
|
84
|
+
};
|
|
85
|
+
archivedAt: {
|
|
86
|
+
type: _contractspec_lib_schema172.FieldType<Date, string>;
|
|
87
|
+
isOptional: false;
|
|
88
|
+
};
|
|
89
|
+
}>>;
|
|
90
|
+
//#endregion
|
|
91
|
+
export { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent };
|
|
92
|
+
//# sourceMappingURL=project.event.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.event.d.ts","names":[],"sources":["../../src/project/project.event.ts"],"sourcesContent":[],"mappings":";;;;;;;cAwEa,qBAAmB,4BAAA,CAAA,sCAAA;EAAnB,SAAA,EAAA;IAUX,IAAA,EAAA,2BAAA,CAAA,SAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;EAV8B,cAAA,EAAA;IAAA,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;IAenB,UAAA,EAAA,KAAA;EAUX,CAAA;;;;;;IAV8B,IAAA,uCAAA,KAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAenB,CAAA;CAUX,CAAA,CAAA;;;;cAzBW,qBAAmB,4BAAA,CAAA,sCAAA;;IAeA,IAAA,EAL9B,2BAAA,CAAA,SAK8B,CAAA,MAAA,EAAA,MAAA,CAAA;IAAA,UAAA,EAAA,KAAA;EAenB,CAAA;EAUX,aAAA,EAAA;;;;;EAV+B,SAAA,EAAA;IAAA,IAAA,uCAAA,CAAA,MAAA,EAAA,MAAA,CAAA;;;;;;;;;;;cAfpB,qBAAmB,4BAAA,CAAA,sCAAA;;UAU9B,2BAAA,CAAA;;;;;;;;;;;;;;;;;;;cAKW,sBAAoB,4BAAA,CAAA,sCAAA;;UAU/B,2BAAA,CAAA"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
import { ScalarTypeEnum, defineSchemaModel } from "@contractspec/lib.schema";
|
|
2
|
+
import { defineEvent } from "@contractspec/lib.contracts";
|
|
3
|
+
|
|
4
|
+
//#region src/project/project.event.ts
|
|
5
|
+
/**
|
|
6
|
+
* Payload when a project is created.
|
|
7
|
+
*/
|
|
8
|
+
const ProjectCreatedPayload = defineSchemaModel({
|
|
9
|
+
name: "ProjectCreatedPayload",
|
|
10
|
+
description: "Payload when a project is created",
|
|
11
|
+
fields: {
|
|
12
|
+
projectId: {
|
|
13
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
14
|
+
isOptional: false
|
|
15
|
+
},
|
|
16
|
+
name: {
|
|
17
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
18
|
+
isOptional: false
|
|
19
|
+
},
|
|
20
|
+
organizationId: {
|
|
21
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
22
|
+
isOptional: false
|
|
23
|
+
},
|
|
24
|
+
createdBy: {
|
|
25
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
26
|
+
isOptional: false
|
|
27
|
+
},
|
|
28
|
+
createdAt: {
|
|
29
|
+
type: ScalarTypeEnum.DateTime(),
|
|
30
|
+
isOptional: false
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
});
|
|
34
|
+
/**
|
|
35
|
+
* Payload when a project is updated.
|
|
36
|
+
*/
|
|
37
|
+
const ProjectUpdatedPayload = defineSchemaModel({
|
|
38
|
+
name: "ProjectUpdatedPayload",
|
|
39
|
+
description: "Payload when a project is updated",
|
|
40
|
+
fields: {
|
|
41
|
+
projectId: {
|
|
42
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
43
|
+
isOptional: false
|
|
44
|
+
},
|
|
45
|
+
updatedFields: {
|
|
46
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
47
|
+
isArray: true,
|
|
48
|
+
isOptional: false
|
|
49
|
+
},
|
|
50
|
+
updatedBy: {
|
|
51
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
52
|
+
isOptional: false
|
|
53
|
+
},
|
|
54
|
+
updatedAt: {
|
|
55
|
+
type: ScalarTypeEnum.DateTime(),
|
|
56
|
+
isOptional: false
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Payload when a project is deleted.
|
|
62
|
+
*/
|
|
63
|
+
const ProjectDeletedPayload = defineSchemaModel({
|
|
64
|
+
name: "ProjectDeletedPayload",
|
|
65
|
+
description: "Payload when a project is deleted",
|
|
66
|
+
fields: {
|
|
67
|
+
projectId: {
|
|
68
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
69
|
+
isOptional: false
|
|
70
|
+
},
|
|
71
|
+
organizationId: {
|
|
72
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
73
|
+
isOptional: false
|
|
74
|
+
},
|
|
75
|
+
deletedBy: {
|
|
76
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
77
|
+
isOptional: false
|
|
78
|
+
},
|
|
79
|
+
deletedAt: {
|
|
80
|
+
type: ScalarTypeEnum.DateTime(),
|
|
81
|
+
isOptional: false
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Payload when a project is archived.
|
|
87
|
+
*/
|
|
88
|
+
const ProjectArchivedPayload = defineSchemaModel({
|
|
89
|
+
name: "ProjectArchivedPayload",
|
|
90
|
+
description: "Payload when a project is archived",
|
|
91
|
+
fields: {
|
|
92
|
+
projectId: {
|
|
93
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
94
|
+
isOptional: false
|
|
95
|
+
},
|
|
96
|
+
archivedBy: {
|
|
97
|
+
type: ScalarTypeEnum.String_unsecure(),
|
|
98
|
+
isOptional: false
|
|
99
|
+
},
|
|
100
|
+
archivedAt: {
|
|
101
|
+
type: ScalarTypeEnum.DateTime(),
|
|
102
|
+
isOptional: false
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
/**
|
|
107
|
+
* Event: A new project has been created.
|
|
108
|
+
*/
|
|
109
|
+
const ProjectCreatedEvent = defineEvent({
|
|
110
|
+
meta: {
|
|
111
|
+
key: "project.created",
|
|
112
|
+
version: 1,
|
|
113
|
+
description: "A new project has been created.",
|
|
114
|
+
stability: "stable",
|
|
115
|
+
owners: ["@saas-team"],
|
|
116
|
+
tags: ["project", "created"]
|
|
117
|
+
},
|
|
118
|
+
payload: ProjectCreatedPayload
|
|
119
|
+
});
|
|
120
|
+
/**
|
|
121
|
+
* Event: A project has been updated.
|
|
122
|
+
*/
|
|
123
|
+
const ProjectUpdatedEvent = defineEvent({
|
|
124
|
+
meta: {
|
|
125
|
+
key: "project.updated",
|
|
126
|
+
version: 1,
|
|
127
|
+
description: "A project has been updated.",
|
|
128
|
+
stability: "stable",
|
|
129
|
+
owners: ["@saas-team"],
|
|
130
|
+
tags: ["project", "updated"]
|
|
131
|
+
},
|
|
132
|
+
payload: ProjectUpdatedPayload
|
|
133
|
+
});
|
|
134
|
+
/**
|
|
135
|
+
* Event: A project has been deleted.
|
|
136
|
+
*/
|
|
137
|
+
const ProjectDeletedEvent = defineEvent({
|
|
138
|
+
meta: {
|
|
139
|
+
key: "project.deleted",
|
|
140
|
+
version: 1,
|
|
141
|
+
description: "A project has been deleted.",
|
|
142
|
+
stability: "stable",
|
|
143
|
+
owners: ["@saas-team"],
|
|
144
|
+
tags: ["project", "deleted"]
|
|
145
|
+
},
|
|
146
|
+
payload: ProjectDeletedPayload
|
|
147
|
+
});
|
|
148
|
+
/**
|
|
149
|
+
* Event: A project has been archived.
|
|
150
|
+
*/
|
|
151
|
+
const ProjectArchivedEvent = defineEvent({
|
|
152
|
+
meta: {
|
|
153
|
+
key: "project.archived",
|
|
154
|
+
version: 1,
|
|
155
|
+
description: "A project has been archived.",
|
|
156
|
+
stability: "stable",
|
|
157
|
+
owners: ["@saas-team"],
|
|
158
|
+
tags: ["project", "archived"]
|
|
159
|
+
},
|
|
160
|
+
payload: ProjectArchivedPayload
|
|
161
|
+
});
|
|
162
|
+
|
|
163
|
+
//#endregion
|
|
164
|
+
export { ProjectArchivedEvent, ProjectCreatedEvent, ProjectDeletedEvent, ProjectUpdatedEvent };
|
|
165
|
+
//# sourceMappingURL=project.event.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.event.js","names":[],"sources":["../../src/project/project.event.ts"],"sourcesContent":["import { ScalarTypeEnum, defineSchemaModel } from '@contractspec/lib.schema';\nimport { defineEvent } from '@contractspec/lib.contracts';\n\n/**\n * Payload when a project is created.\n */\nconst ProjectCreatedPayload = defineSchemaModel({\n name: 'ProjectCreatedPayload',\n description: 'Payload when a project is created',\n fields: {\n projectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n name: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n createdBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n createdAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when a project is updated.\n */\nconst ProjectUpdatedPayload = defineSchemaModel({\n name: 'ProjectUpdatedPayload',\n description: 'Payload when a project is updated',\n fields: {\n projectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n updatedFields: {\n type: ScalarTypeEnum.String_unsecure(),\n isArray: true,\n isOptional: false,\n },\n updatedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n updatedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when a project is deleted.\n */\nconst ProjectDeletedPayload = defineSchemaModel({\n name: 'ProjectDeletedPayload',\n description: 'Payload when a project is deleted',\n fields: {\n projectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n organizationId: {\n type: ScalarTypeEnum.String_unsecure(),\n isOptional: false,\n },\n deletedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n deletedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Payload when a project is archived.\n */\nconst ProjectArchivedPayload = defineSchemaModel({\n name: 'ProjectArchivedPayload',\n description: 'Payload when a project is archived',\n fields: {\n projectId: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n archivedBy: { type: ScalarTypeEnum.String_unsecure(), isOptional: false },\n archivedAt: { type: ScalarTypeEnum.DateTime(), isOptional: false },\n },\n});\n\n/**\n * Event: A new project has been created.\n */\nexport const ProjectCreatedEvent = defineEvent({\n meta: {\n key: 'project.created',\n version: 1,\n description: 'A new project has been created.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['project', 'created'],\n },\n payload: ProjectCreatedPayload,\n});\n\n/**\n * Event: A project has been updated.\n */\nexport const ProjectUpdatedEvent = defineEvent({\n meta: {\n key: 'project.updated',\n version: 1,\n description: 'A project has been updated.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['project', 'updated'],\n },\n payload: ProjectUpdatedPayload,\n});\n\n/**\n * Event: A project has been deleted.\n */\nexport const ProjectDeletedEvent = defineEvent({\n meta: {\n key: 'project.deleted',\n version: 1,\n description: 'A project has been deleted.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['project', 'deleted'],\n },\n payload: ProjectDeletedPayload,\n});\n\n/**\n * Event: A project has been archived.\n */\nexport const ProjectArchivedEvent = defineEvent({\n meta: {\n key: 'project.archived',\n version: 1,\n description: 'A project has been archived.',\n stability: 'stable',\n owners: ['@saas-team'],\n tags: ['project', 'archived'],\n },\n payload: ProjectArchivedPayload,\n});\n"],"mappings":";;;;;;;AAMA,MAAM,wBAAwB,kBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,MAAM;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACnE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,wBAAwB,kBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,eAAe;GACb,MAAM,eAAe,iBAAiB;GACtC,SAAS;GACT,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,wBAAwB,kBAAkB;CAC9C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,gBAAgB;GACd,MAAM,eAAe,iBAAiB;GACtC,YAAY;GACb;EACD,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,WAAW;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EAClE;CACF,CAAC;;;;AAKF,MAAM,yBAAyB,kBAAkB;CAC/C,MAAM;CACN,aAAa;CACb,QAAQ;EACN,WAAW;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACxE,YAAY;GAAE,MAAM,eAAe,iBAAiB;GAAE,YAAY;GAAO;EACzE,YAAY;GAAE,MAAM,eAAe,UAAU;GAAE,YAAY;GAAO;EACnE;CACF,CAAC;;;;AAKF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,UAAU;EAC7B;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,UAAU;EAC7B;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,sBAAsB,YAAY;CAC7C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,UAAU;EAC7B;CACD,SAAS;CACV,CAAC;;;;AAKF,MAAa,uBAAuB,YAAY;CAC9C,MAAM;EACJ,KAAK;EACL,SAAS;EACT,aAAa;EACb,WAAW;EACX,QAAQ,CAAC,aAAa;EACtB,MAAM,CAAC,WAAW,WAAW;EAC9B;CACD,SAAS;CACV,CAAC"}
|