@notty/modules 1.0.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/dist/index.cjs ADDED
@@ -0,0 +1,698 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+
20
+ // src/index.ts
21
+ var index_exports = {};
22
+ __export(index_exports, {
23
+ createNottyModuleRegistry: () => import_module_api2.createNottyModuleRegistry,
24
+ firstPartyModuleRegistry: () => firstPartyModuleRegistry,
25
+ getFirstPartyModuleManifests: () => getFirstPartyModuleManifests
26
+ });
27
+ module.exports = __toCommonJS(index_exports);
28
+ var import_module_api = require("@notty/module-api");
29
+
30
+ // src/catalog.ts
31
+ var coreCmsModule = {
32
+ module: {
33
+ key: "core.cms",
34
+ displayName: "Core CMS",
35
+ description: "Schema builder, content editor, media library, delivery APIs and base RBAC.",
36
+ firstParty: true,
37
+ commercial: false,
38
+ addOn: false,
39
+ packageName: "@notty/module-cms",
40
+ configKey: "cms"
41
+ },
42
+ features: [
43
+ {
44
+ key: "content.schema-builder",
45
+ displayName: "Schema Builder",
46
+ description: "Create and manage content schemas.",
47
+ owningModule: "core.cms",
48
+ commercial: false
49
+ },
50
+ {
51
+ key: "content.editor",
52
+ displayName: "Content Editor",
53
+ description: "Create and edit content entries in the admin panel.",
54
+ owningModule: "core.cms",
55
+ commercial: false
56
+ },
57
+ {
58
+ key: "media.library",
59
+ displayName: "Media Library",
60
+ description: "Upload, organize and deliver media assets.",
61
+ owningModule: "core.cms",
62
+ commercial: false
63
+ },
64
+ {
65
+ key: "api.rest",
66
+ displayName: "REST API",
67
+ description: "Deliver content through REST endpoints.",
68
+ owningModule: "core.cms",
69
+ commercial: false
70
+ },
71
+ {
72
+ key: "api.graphql",
73
+ displayName: "GraphQL API",
74
+ description: "Deliver content through GraphQL.",
75
+ owningModule: "core.cms",
76
+ commercial: false
77
+ },
78
+ {
79
+ key: "auth.basic-rbac",
80
+ displayName: "Basic RBAC",
81
+ description: "Base roles and permission controls.",
82
+ owningModule: "core.cms",
83
+ commercial: false
84
+ }
85
+ ]
86
+ };
87
+ var coreDeveloperModule = {
88
+ module: {
89
+ key: "core.developer",
90
+ displayName: "Developer Platform",
91
+ description: "Plugin runtime, admin extensions and generated application contracts.",
92
+ firstParty: true,
93
+ commercial: false,
94
+ addOn: false,
95
+ requiredModules: ["core.cms"],
96
+ packageName: "@notty/module-developer",
97
+ configKey: "developer"
98
+ },
99
+ features: [
100
+ {
101
+ key: "plugins.runtime",
102
+ displayName: "Plugin Runtime",
103
+ description: "Load app-local and reusable plugins.",
104
+ owningModule: "core.developer",
105
+ commercial: false
106
+ },
107
+ {
108
+ key: "plugins.admin-extensions",
109
+ displayName: "Admin Extensions",
110
+ description: "Render plugin-provided admin navigation, pages and widgets.",
111
+ owningModule: "core.developer",
112
+ commercial: false
113
+ },
114
+ {
115
+ key: "sdk.codegen",
116
+ displayName: "Generated App Contract",
117
+ description: "Use generated project structure and extension contracts.",
118
+ owningModule: "core.developer",
119
+ commercial: false
120
+ }
121
+ ],
122
+ adminRouteGates: {
123
+ "admin:extensions:get": "plugins.admin-extensions"
124
+ }
125
+ };
126
+ var proProductionModule = {
127
+ module: {
128
+ key: "pro.production",
129
+ displayName: "Production Use",
130
+ description: "Commercial production use, white-label branding, preview tokens and backups.",
131
+ firstParty: true,
132
+ commercial: true,
133
+ addOn: false,
134
+ requiredModules: ["core.cms", "core.developer"],
135
+ packageName: "@notty/module-production",
136
+ configKey: "production"
137
+ },
138
+ features: [
139
+ {
140
+ key: "deployment.production-use",
141
+ displayName: "Production Use",
142
+ description: "Run Notty for commercial production projects.",
143
+ owningModule: "pro.production",
144
+ commercial: true
145
+ },
146
+ {
147
+ key: "branding.white-label",
148
+ displayName: "White-label Branding",
149
+ description: "Customize admin branding for commercial projects.",
150
+ owningModule: "pro.production",
151
+ commercial: true
152
+ },
153
+ {
154
+ key: "preview.tokens",
155
+ displayName: "Preview Tokens",
156
+ description: "Generate secure preview links for unpublished content.",
157
+ owningModule: "pro.production",
158
+ commercial: true
159
+ },
160
+ {
161
+ key: "backups.manual",
162
+ displayName: "Manual Backups",
163
+ description: "Create and restore backups manually.",
164
+ owningModule: "pro.production",
165
+ commercial: true
166
+ }
167
+ ],
168
+ adminRouteGates: {
169
+ "admin:backups:list": "backups.manual",
170
+ "admin:backups:get": "backups.manual",
171
+ "admin:backups:create": "backups.manual",
172
+ "admin:backups:delete": "backups.manual",
173
+ "admin:backups:restore": "backups.manual",
174
+ "admin:preview-tokens:list": "preview.tokens",
175
+ "admin:preview-tokens:create": "preview.tokens",
176
+ "admin:preview-tokens:delete": "preview.tokens"
177
+ },
178
+ adminScopeGates: {
179
+ "admin:backups:read": "backups.manual",
180
+ "admin:backups:write": "backups.manual",
181
+ "preview:read": "preview.tokens",
182
+ "preview:write": "preview.tokens"
183
+ }
184
+ };
185
+ var businessWorkflowModule = {
186
+ module: {
187
+ key: "business.workflow",
188
+ displayName: "Workflow",
189
+ description: "Approvals, releases, assignments and editorial collaboration.",
190
+ firstParty: true,
191
+ commercial: true,
192
+ addOn: false,
193
+ requiredModules: ["pro.production"],
194
+ packageName: "@notty/module-workflow",
195
+ configKey: "workflow"
196
+ },
197
+ features: [
198
+ {
199
+ key: "workflow.approvals",
200
+ displayName: "Approvals",
201
+ description: "Route content through editorial approval states.",
202
+ owningModule: "business.workflow",
203
+ commercial: true
204
+ },
205
+ {
206
+ key: "workflow.releases",
207
+ displayName: "Content Releases",
208
+ description: "Group, schedule and roll back coordinated releases.",
209
+ owningModule: "business.workflow",
210
+ commercial: true
211
+ },
212
+ {
213
+ key: "workflow.assignments",
214
+ displayName: "Assignments",
215
+ description: "Assign editorial work to users.",
216
+ owningModule: "business.workflow",
217
+ commercial: true
218
+ },
219
+ {
220
+ key: "collaboration.comments",
221
+ displayName: "Comments",
222
+ description: "Discuss content with editorial comments.",
223
+ owningModule: "business.workflow",
224
+ commercial: true
225
+ }
226
+ ],
227
+ adminRouteGates: {
228
+ "admin:assignments:mine": "workflow.assignments",
229
+ "admin:releases:list": "workflow.releases",
230
+ "admin:releases:get": "workflow.releases",
231
+ "admin:releases:create": "workflow.releases",
232
+ "admin:releases:update": "workflow.releases",
233
+ "admin:releases:delete": "workflow.releases",
234
+ "admin:releases:add-item": "workflow.releases",
235
+ "admin:releases:remove-item": "workflow.releases",
236
+ "admin:releases:publish": "workflow.releases",
237
+ "admin:releases:schedule": "workflow.releases",
238
+ "admin:releases:unschedule": "workflow.releases",
239
+ "admin:releases:rollback": "workflow.releases"
240
+ },
241
+ adminScopeGates: {
242
+ "releases:read": "workflow.releases",
243
+ "releases:write": "workflow.releases"
244
+ }
245
+ };
246
+ var businessOperationsModule = {
247
+ module: {
248
+ key: "business.operations",
249
+ displayName: "Operations",
250
+ description: "Webhooks, job queue, scheduled jobs, backup automation and delivery insights.",
251
+ firstParty: true,
252
+ commercial: true,
253
+ addOn: false,
254
+ requiredModules: ["pro.production"],
255
+ packageName: "@notty/module-operations",
256
+ configKey: "operations"
257
+ },
258
+ features: [
259
+ {
260
+ key: "operations.webhooks",
261
+ displayName: "Webhooks",
262
+ description: "Send event-driven integrations.",
263
+ owningModule: "business.operations",
264
+ commercial: true
265
+ },
266
+ {
267
+ key: "operations.jobs",
268
+ displayName: "Job Queue",
269
+ description: "Run background jobs and retries.",
270
+ owningModule: "business.operations",
271
+ commercial: true
272
+ },
273
+ {
274
+ key: "operations.scheduled-jobs",
275
+ displayName: "Scheduled Jobs",
276
+ description: "Run cron-like operational jobs.",
277
+ owningModule: "business.operations",
278
+ commercial: true
279
+ },
280
+ {
281
+ key: "operations.backup-automation",
282
+ displayName: "Backup Automation",
283
+ description: "Schedule recurring backups and retention.",
284
+ owningModule: "business.operations",
285
+ commercial: true
286
+ },
287
+ {
288
+ key: "operations.delivery-observability",
289
+ displayName: "Delivery Observability",
290
+ description: "Inspect delivery API, search and cache state.",
291
+ owningModule: "business.operations",
292
+ commercial: true
293
+ },
294
+ {
295
+ key: "operations.alerts",
296
+ displayName: "Operational Alerts",
297
+ description: "Configure, acknowledge and resolve operational alerts.",
298
+ owningModule: "business.operations",
299
+ commercial: true
300
+ }
301
+ ],
302
+ adminRouteGates: {
303
+ "admin:backups:schedule:get": "operations.backup-automation",
304
+ "admin:backups:schedule:update": "operations.backup-automation",
305
+ "admin:alerts:list": "operations.alerts",
306
+ "admin:alerts:stats": "operations.alerts",
307
+ "admin:alerts:config:get": "operations.alerts",
308
+ "admin:alerts:config:update": "operations.alerts",
309
+ "admin:alerts:acknowledge": "operations.alerts",
310
+ "admin:alerts:resolve": "operations.alerts",
311
+ "admin:jobs:list": "operations.jobs",
312
+ "admin:jobs:get": "operations.jobs",
313
+ "admin:jobs:stats": "operations.jobs",
314
+ "admin:jobs:retry": "operations.jobs",
315
+ "admin:jobs:cancel": "operations.jobs",
316
+ "admin:jobs:cleanup": "operations.jobs",
317
+ "admin:scheduled-jobs:list": "operations.scheduled-jobs",
318
+ "admin:scheduled-jobs:get": "operations.scheduled-jobs",
319
+ "admin:scheduled-jobs:create": "operations.scheduled-jobs",
320
+ "admin:scheduled-jobs:update": "operations.scheduled-jobs",
321
+ "admin:scheduled-jobs:delete": "operations.scheduled-jobs",
322
+ "admin:scheduled-jobs:trigger": "operations.scheduled-jobs",
323
+ "admin:delivery:overview": "operations.delivery-observability",
324
+ "admin:delivery:reindex": "operations.delivery-observability",
325
+ "admin:observability:overview": "operations.delivery-observability",
326
+ "admin:observability:cache:clear": "operations.delivery-observability"
327
+ },
328
+ adminScopeGates: {
329
+ "webhooks:read": "operations.webhooks",
330
+ "webhooks:write": "operations.webhooks",
331
+ "jobs:read": "operations.jobs",
332
+ "jobs:write": "operations.jobs",
333
+ "scheduled-jobs:read": "operations.scheduled-jobs",
334
+ "scheduled-jobs:write": "operations.scheduled-jobs",
335
+ "admin:alerts:read": "operations.alerts",
336
+ "admin:alerts:write": "operations.alerts"
337
+ }
338
+ };
339
+ var businessComplianceModule = {
340
+ module: {
341
+ key: "business.compliance",
342
+ displayName: "Compliance",
343
+ description: "Audit logs, retention policies, legal holds and subject request workflows.",
344
+ firstParty: true,
345
+ commercial: true,
346
+ addOn: false,
347
+ requiredModules: ["pro.production"],
348
+ optionalModules: ["business.workflow"],
349
+ packageName: "@notty/module-compliance",
350
+ configKey: "compliance"
351
+ },
352
+ features: [
353
+ {
354
+ key: "compliance.audit-log",
355
+ displayName: "Audit Log",
356
+ description: "Track administrative and content activity.",
357
+ owningModule: "business.compliance",
358
+ commercial: true
359
+ },
360
+ {
361
+ key: "compliance.governance",
362
+ displayName: "Governance",
363
+ description: "Configure compliance governance controls.",
364
+ owningModule: "business.compliance",
365
+ commercial: true
366
+ },
367
+ {
368
+ key: "compliance.retention",
369
+ displayName: "Retention Policies",
370
+ description: "Manage data retention policy execution.",
371
+ owningModule: "business.compliance",
372
+ commercial: true
373
+ },
374
+ {
375
+ key: "compliance.legal-holds",
376
+ displayName: "Legal Holds",
377
+ description: "Protect records from retention deletion.",
378
+ owningModule: "business.compliance",
379
+ commercial: true
380
+ },
381
+ {
382
+ key: "compliance.subject-requests",
383
+ displayName: "Subject Requests",
384
+ description: "Handle privacy export and erasure workflows.",
385
+ owningModule: "business.compliance",
386
+ commercial: true
387
+ }
388
+ ],
389
+ adminRouteGates: {
390
+ "admin:audit-logs:list": "compliance.audit-log",
391
+ "admin:audit-logs:get": "compliance.audit-log",
392
+ "admin:activity:list": "compliance.audit-log",
393
+ "admin:activity:stream": "compliance.audit-log",
394
+ "admin:compliance:governance:get": "compliance.governance",
395
+ "admin:compliance:governance:upsert": "compliance.governance",
396
+ "admin:compliance:legal-holds:list": "compliance.legal-holds",
397
+ "admin:compliance:legal-holds:get": "compliance.legal-holds",
398
+ "admin:compliance:legal-holds:create": "compliance.legal-holds",
399
+ "admin:compliance:legal-holds:release": "compliance.legal-holds",
400
+ "admin:compliance:retention:list": "compliance.retention",
401
+ "admin:compliance:retention:get": "compliance.retention",
402
+ "admin:compliance:retention:create": "compliance.retention",
403
+ "admin:compliance:retention:update": "compliance.retention",
404
+ "admin:compliance:retention:delete": "compliance.retention",
405
+ "admin:compliance:retention:run": "compliance.retention",
406
+ "admin:compliance:subject-requests:list": "compliance.subject-requests",
407
+ "admin:compliance:subject-requests:get": "compliance.subject-requests",
408
+ "admin:compliance:subject-requests:create": "compliance.subject-requests",
409
+ "admin:compliance:subject-requests:download": "compliance.subject-requests"
410
+ },
411
+ adminScopeGates: {
412
+ "audit-logs:read": "compliance.audit-log",
413
+ "activity:read": "compliance.audit-log"
414
+ }
415
+ };
416
+ var businessAiModule = {
417
+ module: {
418
+ key: "business.ai",
419
+ displayName: "AI Assistants",
420
+ description: "Schema, editorial and governance assistants with operational guardrails.",
421
+ firstParty: true,
422
+ commercial: true,
423
+ addOn: false,
424
+ requiredModules: ["core.developer"],
425
+ optionalModules: ["business.workflow", "business.compliance"],
426
+ packageName: "@notty/module-ai",
427
+ configKey: "ai"
428
+ },
429
+ features: [
430
+ {
431
+ key: "ai.schema-assistant",
432
+ displayName: "Schema Assistant",
433
+ description: "Use AI to propose schema improvements.",
434
+ owningModule: "business.ai",
435
+ commercial: true
436
+ },
437
+ {
438
+ key: "ai.editorial-qa",
439
+ displayName: "Editorial QA",
440
+ description: "Use AI to review content quality.",
441
+ owningModule: "business.ai",
442
+ commercial: true
443
+ },
444
+ {
445
+ key: "ai.guardrails",
446
+ displayName: "AI Guardrails",
447
+ description: "Apply AI action policy and governance checks.",
448
+ owningModule: "business.ai",
449
+ commercial: true
450
+ }
451
+ ],
452
+ adminRouteGates: {
453
+ "admin:ai:schema-assistant": "ai.schema-assistant",
454
+ "admin:ai:migration-advisor": "ai.schema-assistant",
455
+ "admin:ai:scaffolding-assistant": "ai.schema-assistant",
456
+ "admin:ai:editorial-qa": "ai.editorial-qa",
457
+ "admin:ai:query-advisor": "ai.guardrails",
458
+ "admin:ai:automation-advisor": "ai.guardrails",
459
+ "admin:ai:actions:list": "ai.guardrails",
460
+ "admin:ai:actions:get": "ai.guardrails",
461
+ "admin:ai:actions:propose": "ai.guardrails",
462
+ "admin:ai:actions:approve": "ai.guardrails",
463
+ "admin:ai:actions:reject": "ai.guardrails",
464
+ "admin:ai:actions:apply": "ai.guardrails"
465
+ },
466
+ adminScopeGates: {
467
+ "admin:ai:read": "ai.guardrails",
468
+ "admin:ai:write": "ai.guardrails"
469
+ }
470
+ };
471
+ var businessPluginTrustModule = {
472
+ module: {
473
+ key: "business.plugin-trust",
474
+ displayName: "Plugin Trust",
475
+ description: "First-party plugin allowlists, integrity checks and production trust policy.",
476
+ firstParty: true,
477
+ commercial: true,
478
+ addOn: false,
479
+ requiredModules: ["core.developer"],
480
+ packageName: "@notty/module-plugin-trust",
481
+ configKey: "pluginTrust"
482
+ },
483
+ features: [
484
+ {
485
+ key: "plugins.trust-policy",
486
+ displayName: "Plugin Trust Policy",
487
+ description: "Enforce plugin allowlists and integrity checks.",
488
+ owningModule: "business.plugin-trust",
489
+ commercial: true
490
+ }
491
+ ]
492
+ };
493
+ var enterpriseAuthModule = {
494
+ module: {
495
+ key: "enterprise.auth",
496
+ displayName: "Enterprise Identity",
497
+ description: "SSO and SCIM automation for corporate identity providers.",
498
+ firstParty: true,
499
+ commercial: true,
500
+ addOn: false,
501
+ requiredModules: ["pro.production"],
502
+ packageName: "@notty/module-enterprise-auth",
503
+ configKey: "enterpriseAuth"
504
+ },
505
+ features: [
506
+ {
507
+ key: "enterprise.sso",
508
+ displayName: "SSO",
509
+ description: "Authenticate admins through enterprise identity providers.",
510
+ owningModule: "enterprise.auth",
511
+ commercial: true
512
+ },
513
+ {
514
+ key: "enterprise.scim",
515
+ displayName: "SCIM",
516
+ description: "Automate identity provisioning and deprovisioning.",
517
+ owningModule: "enterprise.auth",
518
+ commercial: true
519
+ }
520
+ ],
521
+ adminRouteGates: {
522
+ "admin:sso:providers:list": "enterprise.sso",
523
+ "admin:sso:providers:show": "enterprise.sso",
524
+ "admin:sso:providers:create": "enterprise.sso",
525
+ "admin:sso:providers:update": "enterprise.sso",
526
+ "admin:sso:providers:delete": "enterprise.sso"
527
+ },
528
+ adminScopeGates: {
529
+ "admin:scim:read": "enterprise.scim",
530
+ "admin:scim:write": "enterprise.scim"
531
+ }
532
+ };
533
+ var enterpriseScaleModule = {
534
+ module: {
535
+ key: "enterprise.scale",
536
+ displayName: "Enterprise Scale",
537
+ description: "Multi-tenancy, workspaces, quotas and scale-oriented isolation controls.",
538
+ firstParty: true,
539
+ commercial: true,
540
+ addOn: false,
541
+ requiredModules: ["pro.production"],
542
+ optionalModules: ["enterprise.auth"],
543
+ packageName: "@notty/module-enterprise-scale",
544
+ configKey: "enterpriseScale"
545
+ },
546
+ features: [
547
+ {
548
+ key: "enterprise.multi-tenancy",
549
+ displayName: "Multi-tenancy",
550
+ description: "Isolate tenants in a single deployment.",
551
+ owningModule: "enterprise.scale",
552
+ commercial: true
553
+ },
554
+ {
555
+ key: "enterprise.workspaces",
556
+ displayName: "Workspaces",
557
+ description: "Segment content and users by workspace.",
558
+ owningModule: "enterprise.scale",
559
+ commercial: true
560
+ },
561
+ {
562
+ key: "enterprise.quotas",
563
+ displayName: "Quotas",
564
+ description: "Limit tenant and workspace resource usage.",
565
+ owningModule: "enterprise.scale",
566
+ commercial: true
567
+ }
568
+ ],
569
+ adminRouteGates: {
570
+ "admin:workspaces:list": "enterprise.workspaces",
571
+ "admin:workspaces:get": "enterprise.workspaces",
572
+ "admin:workspaces:create": "enterprise.workspaces",
573
+ "admin:workspaces:update": "enterprise.workspaces",
574
+ "admin:workspaces:delete": "enterprise.workspaces"
575
+ },
576
+ adminScopeGates: {
577
+ "admin:workspaces:read": "enterprise.workspaces",
578
+ "admin:workspaces:write": "enterprise.workspaces"
579
+ }
580
+ };
581
+ var enterpriseDeploymentModule = {
582
+ module: {
583
+ key: "enterprise.deployment",
584
+ displayName: "Enterprise Deployment",
585
+ description: "High-availability deployment and operations controls.",
586
+ firstParty: true,
587
+ commercial: true,
588
+ addOn: false,
589
+ requiredModules: ["pro.production"],
590
+ optionalModules: ["business.operations"],
591
+ packageName: "@notty/module-enterprise-deployment",
592
+ configKey: "enterpriseDeployment"
593
+ },
594
+ features: [
595
+ {
596
+ key: "enterprise.ha",
597
+ displayName: "High Availability",
598
+ description: "Run Notty in highly available production topologies.",
599
+ owningModule: "enterprise.deployment",
600
+ commercial: true
601
+ }
602
+ ]
603
+ };
604
+ var commerceBundleModule = {
605
+ module: {
606
+ key: "commerce.bundle",
607
+ displayName: "Commerce Bundle",
608
+ description: "First-party commerce domain modules for catalogs and checkout integrations.",
609
+ firstParty: true,
610
+ commercial: true,
611
+ addOn: true,
612
+ requiredModules: ["pro.production"],
613
+ optionalModules: ["business.workflow"],
614
+ packageName: "@notty/module-commerce",
615
+ configKey: "commerce"
616
+ },
617
+ features: [
618
+ {
619
+ key: "commerce.catalog",
620
+ displayName: "Commerce Catalog",
621
+ description: "Model products, variants and commerce content.",
622
+ owningModule: "commerce.bundle",
623
+ commercial: true
624
+ },
625
+ {
626
+ key: "commerce.checkout-integrations",
627
+ displayName: "Checkout Integrations",
628
+ description: "Connect commerce content to checkout providers.",
629
+ owningModule: "commerce.bundle",
630
+ commercial: true
631
+ }
632
+ ]
633
+ };
634
+ var portalBundleModule = {
635
+ module: {
636
+ key: "portal.bundle",
637
+ displayName: "Portal Bundle",
638
+ description: "First-party portal modules for intranet and authenticated member areas.",
639
+ firstParty: true,
640
+ commercial: true,
641
+ addOn: true,
642
+ requiredModules: ["pro.production"],
643
+ optionalModules: ["enterprise.auth"],
644
+ packageName: "@notty/module-portal",
645
+ configKey: "portal"
646
+ },
647
+ features: [
648
+ {
649
+ key: "portal.intranet",
650
+ displayName: "Intranet Portal",
651
+ description: "Build internal portals on top of Notty content.",
652
+ owningModule: "portal.bundle",
653
+ commercial: true
654
+ },
655
+ {
656
+ key: "portal.member-areas",
657
+ displayName: "Member Areas",
658
+ description: "Build authenticated portal experiences.",
659
+ owningModule: "portal.bundle",
660
+ commercial: true
661
+ }
662
+ ]
663
+ };
664
+ var coreModules = [coreCmsModule, coreDeveloperModule];
665
+ var proModules = [proProductionModule];
666
+ var businessModules = [
667
+ businessWorkflowModule,
668
+ businessOperationsModule,
669
+ businessComplianceModule,
670
+ businessAiModule,
671
+ businessPluginTrustModule
672
+ ];
673
+ var enterpriseModules = [
674
+ enterpriseAuthModule,
675
+ enterpriseScaleModule,
676
+ enterpriseDeploymentModule
677
+ ];
678
+ var addOnModules = [commerceBundleModule, portalBundleModule];
679
+ var firstPartyModuleManifests = [
680
+ ...coreModules,
681
+ ...proModules,
682
+ ...businessModules,
683
+ ...enterpriseModules,
684
+ ...addOnModules
685
+ ];
686
+
687
+ // src/index.ts
688
+ var import_module_api2 = require("@notty/module-api");
689
+ var firstPartyModuleRegistry = (0, import_module_api.createNottyModuleRegistry)(firstPartyModuleManifests);
690
+ function getFirstPartyModuleManifests() {
691
+ return firstPartyModuleManifests;
692
+ }
693
+ // Annotate the CommonJS export names for ESM import in node:
694
+ 0 && (module.exports = {
695
+ createNottyModuleRegistry,
696
+ firstPartyModuleRegistry,
697
+ getFirstPartyModuleManifests
698
+ });
@@ -0,0 +1,8 @@
1
+ import * as _notty_module_api from '@notty/module-api';
2
+ import { NottyModuleManifest } from '@notty/module-api';
3
+ export { NottyModuleManifest, NottyModuleRegistry, createNottyModuleRegistry } from '@notty/module-api';
4
+
5
+ declare const firstPartyModuleRegistry: _notty_module_api.NottyModuleRegistry;
6
+ declare function getFirstPartyModuleManifests(): readonly NottyModuleManifest[];
7
+
8
+ export { firstPartyModuleRegistry, getFirstPartyModuleManifests };