@mr.dj2u/library-registry 0.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.
Files changed (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +42 -0
  3. package/THIRD_PARTY_NOTICES.md +90 -0
  4. package/assets/create-expo-app/sdk-56/assets/images/expo-badge-white.png +0 -0
  5. package/assets/create-expo-app/sdk-56/assets/images/expo-badge.png +0 -0
  6. package/assets/create-expo-app/sdk-56/assets/images/expo-logo.png +0 -0
  7. package/assets/create-expo-app/sdk-56/assets/images/logo-glow.png +0 -0
  8. package/assets/create-expo-app/sdk-56/assets/images/react-logo.png +0 -0
  9. package/assets/create-expo-app/sdk-56/assets/images/react-logo@2x.png +0 -0
  10. package/assets/create-expo-app/sdk-56/assets/images/react-logo@3x.png +0 -0
  11. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore.png +0 -0
  12. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore@2x.png +0 -0
  13. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/explore@3x.png +0 -0
  14. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home.png +0 -0
  15. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home@2x.png +0 -0
  16. package/assets/create-expo-app/sdk-56/assets/images/tabIcons/home@3x.png +0 -0
  17. package/assets/create-expo-app/sdk-56/assets/images/tutorial-web.png +0 -0
  18. package/assets/create-expo-app/sdk-56/src/app/_layout.tsx +15 -0
  19. package/assets/create-expo-app/sdk-56/src/app/explore.tsx +180 -0
  20. package/assets/create-expo-app/sdk-56/src/app/index.tsx +98 -0
  21. package/assets/create-expo-app/sdk-56/src/components/animated-icon.module.css +6 -0
  22. package/assets/create-expo-app/sdk-56/src/components/animated-icon.tsx +132 -0
  23. package/assets/create-expo-app/sdk-56/src/components/animated-icon.web.tsx +108 -0
  24. package/assets/create-expo-app/sdk-56/src/components/app-tabs.tsx +32 -0
  25. package/assets/create-expo-app/sdk-56/src/components/app-tabs.web.tsx +115 -0
  26. package/assets/create-expo-app/sdk-56/src/components/external-link.tsx +25 -0
  27. package/assets/create-expo-app/sdk-56/src/components/hint-row.tsx +35 -0
  28. package/assets/create-expo-app/sdk-56/src/components/themed-text.tsx +73 -0
  29. package/assets/create-expo-app/sdk-56/src/components/themed-view.tsx +16 -0
  30. package/assets/create-expo-app/sdk-56/src/components/ui/collapsible.tsx +65 -0
  31. package/assets/create-expo-app/sdk-56/src/components/web-badge.tsx +43 -0
  32. package/assets/create-expo-app/sdk-56/src/constants/theme.ts +65 -0
  33. package/assets/create-expo-app/sdk-56/src/global.css +9 -0
  34. package/assets/create-expo-app/sdk-56/src/hooks/use-color-scheme.ts +1 -0
  35. package/assets/create-expo-app/sdk-56/src/hooks/use-color-scheme.web.ts +21 -0
  36. package/assets/create-expo-app/sdk-56/src/hooks/use-theme.ts +14 -0
  37. package/assets/create-expo-stack/2.21.3/base/components/BackButton.tsx +23 -0
  38. package/assets/create-expo-stack/2.21.3/base/components/Button.tsx +42 -0
  39. package/assets/create-expo-stack/2.21.3/base/components/Container.tsx +14 -0
  40. package/assets/create-expo-stack/2.21.3/base/components/EditScreenInfo.tsx +36 -0
  41. package/assets/create-expo-stack/2.21.3/base/components/HeaderButton.tsx +31 -0
  42. package/assets/create-expo-stack/2.21.3/base/components/ScreenContent.tsx +40 -0
  43. package/assets/create-expo-stack/2.21.3/base/components/TabBarIcon.tsx +15 -0
  44. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ActivityIndicator.tsx +10 -0
  45. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Avatar.tsx +32 -0
  46. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Button.tsx +141 -0
  47. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/DatePicker.android.tsx +77 -0
  48. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/DatePicker.tsx +23 -0
  49. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/DatePicker/index.ts +1 -0
  50. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/Icon.ios.tsx +55 -0
  51. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/Icon.tsx +58 -0
  52. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/index.ts +16 -0
  53. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Icon/types.ts +19 -0
  54. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Picker.tsx +42 -0
  55. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ProgressIndicator.tsx +68 -0
  56. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Slider.tsx +28 -0
  57. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Text.tsx +55 -0
  58. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/ThemeToggle.tsx +33 -0
  59. package/assets/create-expo-stack/2.21.3-mrdj.2/src/components/nativewindui/Toggle.tsx +20 -0
  60. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/cn.ts +6 -0
  61. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/useColorScheme.tsx +21 -0
  62. package/assets/create-expo-stack/2.21.3-mrdj.2/src/lib/useHeaderSearchBar.tsx +33 -0
  63. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/colors.ts +123 -0
  64. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/index.ts +32 -0
  65. package/assets/create-expo-stack/2.21.3-mrdj.2/src/theme/with-opacity.ts +155 -0
  66. package/assets/mds/routes/drawer-tabs/data.tsx +1 -0
  67. package/assets/mds/routes/drawer-tabs/index.tsx +1 -0
  68. package/assets/mds/routes/drawer-tabs/nativewindui.tsx +1 -0
  69. package/assets/mds/routes/drawer-tabs/sdk-56.tsx +1 -0
  70. package/assets/mds/routes/drawer-tabs/stylist.tsx +1 -0
  71. package/assets/mds/scripts/stylist-sync-android.mjs +39 -0
  72. package/assets/mds/src/app/exposition/data.tsx +1 -0
  73. package/assets/mds/src/app/exposition/index.tsx +1 -0
  74. package/assets/mds/src/app/exposition/nativewindui.tsx +1 -0
  75. package/assets/mds/src/app/exposition/sdk-56.tsx +1 -0
  76. package/assets/mds/src/app/exposition/stylist-sync+api.ts +241 -0
  77. package/assets/mds/src/app/exposition/stylist.tsx +1 -0
  78. package/assets/mds/src/app/onboarding/account-setup.tsx +1 -0
  79. package/assets/mds/src/app/onboarding/agreement.tsx +1 -0
  80. package/assets/mds/src/app/onboarding/terms.tsx +1 -0
  81. package/assets/mds/src/app/onboarding.tsx +1 -0
  82. package/assets/mds/src/app/settings.tsx +1 -0
  83. package/assets/mds/src/components/exposition/index.ts +8 -0
  84. package/assets/mds/src/components/exposition/notice.tsx +3 -0
  85. package/assets/mds/src/components/exposition/package-card.tsx +76 -0
  86. package/assets/mds/src/components/swmansion/animated-pressable.tsx +54 -0
  87. package/assets/mds/src/components/swmansion/gesture-card.tsx +54 -0
  88. package/assets/mds/src/components/swmansion/keyboard-form.tsx +73 -0
  89. package/assets/mds/src/components/swmansion/screens-card.tsx +40 -0
  90. package/assets/mds/src/components/swmansion/software-mansion-logo.tsx +15 -0
  91. package/assets/mds/src/components/swmansion/svg-mark.tsx +16 -0
  92. package/assets/mds/src/data/mock-app.ts +21 -0
  93. package/assets/mds/src/features/exposition/data-screen.tsx +152 -0
  94. package/assets/mds/src/features/exposition/embedded-fonts.ts +72 -0
  95. package/assets/mds/src/features/exposition/expo-sdk-56-screen.tsx +709 -0
  96. package/assets/mds/src/features/exposition/exposition-screen.tsx +191 -0
  97. package/assets/mds/src/features/exposition/nativewindui-screen.tsx +125 -0
  98. package/assets/mds/src/features/exposition/stylist-screen.tsx +3456 -0
  99. package/assets/mds/src/features/onboarding/account-setup-screen.tsx +54 -0
  100. package/assets/mds/src/features/onboarding/agreement-screen.tsx +6 -0
  101. package/assets/mds/src/features/onboarding/components/legal-document-view.tsx +103 -0
  102. package/assets/mds/src/features/onboarding/legal-documents.ts +80 -0
  103. package/assets/mds/src/features/onboarding/onboarding-screen.tsx +167 -0
  104. package/assets/mds/src/features/onboarding/terms-screen.tsx +6 -0
  105. package/assets/mds/src/features/settings/settings-screen.tsx +57 -0
  106. package/assets/mds/src/services/local-data.native.ts +103 -0
  107. package/assets/mds/src/services/local-data.ts +38 -0
  108. package/assets/mds/src/theme/font-assets.ts +3 -0
  109. package/assets/mds/src/theme/provider.tsx +59 -0
  110. package/assets/mds/src/theme/tokens.ts +180 -0
  111. package/dist/catalog.d.ts +3 -0
  112. package/dist/catalog.d.ts.map +1 -0
  113. package/dist/catalog.js +1110 -0
  114. package/dist/catalog.js.map +1 -0
  115. package/dist/index.d.ts +5 -0
  116. package/dist/index.d.ts.map +1 -0
  117. package/dist/index.js +4 -0
  118. package/dist/index.js.map +1 -0
  119. package/dist/registry.d.ts +7 -0
  120. package/dist/registry.d.ts.map +1 -0
  121. package/dist/registry.js +479 -0
  122. package/dist/registry.js.map +1 -0
  123. package/dist/types.d.ts +169 -0
  124. package/dist/types.d.ts.map +1 -0
  125. package/dist/types.js +2 -0
  126. package/dist/types.js.map +1 -0
  127. package/dist/validation.d.ts +6 -0
  128. package/dist/validation.d.ts.map +1 -0
  129. package/dist/validation.js +209 -0
  130. package/dist/validation.js.map +1 -0
  131. package/package.json +51 -0
@@ -0,0 +1,169 @@
1
+ export type LibraryItemKind = "component" | "animation" | "screen" | "flow" | "integration";
2
+ export type LibrarySourceName = "mds" | "create-expo-app" | "create-expo-stack" | "nativewindui" | "swmansion";
3
+ export type LibraryPlatform = "android" | "ios" | "web";
4
+ export type LibraryStyling = "stylesheet" | "nativewind" | "nativewindui" | "uniwind" | "tamagui" | "restyle";
5
+ export type LibraryNavigation = "expo-router" | "react-navigation";
6
+ export type LibraryNavigationLayout = "stack" | "tabs" | "drawer+tabs";
7
+ export type LibraryAppDirectory = "app" | "src/app" | "root" | "src";
8
+ export type LibraryDependencyKind = "runtime" | "development";
9
+ export type LibraryDependencyInstaller = "expo" | "package-manager";
10
+ export type LibraryAssetEncoding = "utf8" | "binary";
11
+ export type LibraryAssetRole = "source" | "route" | "support" | "static";
12
+ export interface LibrarySource {
13
+ name: LibrarySourceName;
14
+ displayName: string;
15
+ version: string;
16
+ license: "MIT";
17
+ repository: string;
18
+ sourcePath?: string;
19
+ }
20
+ export interface LibraryExpoSdkCompatibility {
21
+ min?: number;
22
+ max?: number;
23
+ }
24
+ export interface LibraryCompatibility {
25
+ expoSdk?: LibraryExpoSdkCompatibility;
26
+ styling?: readonly LibraryStyling[];
27
+ navigation?: readonly LibraryNavigation[];
28
+ navigationLayout?: readonly LibraryNavigationLayout[];
29
+ platforms?: readonly LibraryPlatform[];
30
+ appDirectory?: readonly ("app" | "src/app")[];
31
+ aliases?: readonly string[];
32
+ }
33
+ export interface LibraryDependency {
34
+ name: string;
35
+ version: string;
36
+ kind: LibraryDependencyKind;
37
+ installer: LibraryDependencyInstaller;
38
+ platforms?: readonly LibraryPlatform[];
39
+ }
40
+ export interface LibraryAsset {
41
+ /** Package-relative path. Registry assets always live below `assets/`. */
42
+ path: string;
43
+ /** Project-relative path; supported tokens are documented by `LibraryProjectContext`. */
44
+ destination: string;
45
+ encoding: LibraryAssetEncoding;
46
+ role?: LibraryAssetRole;
47
+ /** Explicit content placeholders; callers replace these only when project context supplies a value. */
48
+ contentTokens?: readonly "__MDS_APP_NAME__"[];
49
+ }
50
+ export interface LibraryVariant {
51
+ id: string;
52
+ name: string;
53
+ description?: string;
54
+ compatibility?: LibraryCompatibility;
55
+ dependencies?: readonly LibraryDependency[];
56
+ composedItems?: readonly string[];
57
+ assets?: readonly LibraryAsset[];
58
+ integration?: readonly string[];
59
+ }
60
+ export interface LibraryIntegration {
61
+ summary: string;
62
+ instructions: readonly string[];
63
+ notes?: readonly string[];
64
+ }
65
+ export interface LibraryPreview {
66
+ description?: string;
67
+ assetPath?: string;
68
+ alt?: string;
69
+ }
70
+ export interface LibraryItem {
71
+ id: string;
72
+ name: string;
73
+ description: string;
74
+ kind: LibraryItemKind;
75
+ source: LibrarySource;
76
+ tags: readonly string[];
77
+ categories: readonly string[];
78
+ delivery: "source-copy";
79
+ compatibility: LibraryCompatibility;
80
+ dependencies: readonly LibraryDependency[];
81
+ composedItems: readonly string[];
82
+ relatedItems: readonly string[];
83
+ variants: readonly LibraryVariant[];
84
+ assets: readonly LibraryAsset[];
85
+ integration: LibraryIntegration;
86
+ preview?: LibraryPreview;
87
+ }
88
+ export interface LibraryItemSummary {
89
+ id: string;
90
+ name: string;
91
+ description: string;
92
+ kind: LibraryItemKind;
93
+ source: LibrarySource;
94
+ tags: readonly string[];
95
+ categories: readonly string[];
96
+ compatibility: LibraryCompatibility;
97
+ variants: readonly Pick<LibraryVariant, "id" | "name" | "description">[];
98
+ }
99
+ export interface LibraryProjectContext {
100
+ projectName?: string;
101
+ /** Expo SDK version such as `56`, `56.0.11`, `~56.0.11`, or `^56.0.11`. */
102
+ expoSdk?: string | number;
103
+ styling?: LibraryStyling;
104
+ /** Both discovered directory paths and MDS's legacy location labels are accepted. */
105
+ appDirectory?: LibraryAppDirectory;
106
+ navigation?: LibraryNavigation;
107
+ navigationLayout?: LibraryNavigationLayout;
108
+ platforms?: readonly LibraryPlatform[];
109
+ aliases?: Readonly<Record<string, string>>;
110
+ dependencies?: Readonly<Record<string, string>>;
111
+ /** Existing project-relative file paths. Used to surface preflight warnings. */
112
+ files?: readonly string[];
113
+ /** Defaults to `src/components`. Must be a safe project-relative path. */
114
+ componentsDirectory?: string;
115
+ /** Defaults to `src/features`. Must be a safe project-relative path. */
116
+ featuresDirectory?: string;
117
+ }
118
+ export interface LibraryFilter {
119
+ kind?: LibraryItemKind | readonly LibraryItemKind[];
120
+ source?: LibrarySourceName | readonly LibrarySourceName[];
121
+ tags?: readonly string[];
122
+ categories?: readonly string[];
123
+ compatibleWith?: LibraryProjectContext;
124
+ }
125
+ export interface LibraryResolveOptions {
126
+ variant?: string;
127
+ }
128
+ export type LibraryResolutionIssueSeverity = "info" | "warning" | "error";
129
+ export type LibraryResolutionIssueCode = "unknown-item" | "unknown-variant" | "unsupported-expo-sdk" | "unsupported-styling" | "unsupported-navigation" | "unsupported-navigation-layout" | "unsupported-platform" | "unsupported-app-directory" | "missing-alias" | "missing-dependency" | "dependency-version-conflict" | "destination-collision" | "destination-exists" | "unsafe-destination";
130
+ export interface LibraryResolutionIssue {
131
+ code: LibraryResolutionIssueCode;
132
+ severity: LibraryResolutionIssueSeverity;
133
+ message: string;
134
+ itemId: string;
135
+ path?: string;
136
+ dependency?: string;
137
+ }
138
+ export interface LibraryResolvedItem {
139
+ id: string;
140
+ variantId?: string;
141
+ }
142
+ export interface LibraryResolvedAsset extends LibraryAsset {
143
+ itemId: string;
144
+ variantId?: string;
145
+ /** Fully rendered, safe project-relative destination path. */
146
+ destination: string;
147
+ }
148
+ export interface LibraryResolution {
149
+ item: LibraryItem;
150
+ variant?: LibraryVariant;
151
+ compatible: boolean;
152
+ issues: LibraryResolutionIssue[];
153
+ /** Dependency-first, de-duplicated composition order. */
154
+ items: LibraryResolvedItem[];
155
+ assets: LibraryResolvedAsset[];
156
+ dependencies: LibraryDependency[];
157
+ integration: string[];
158
+ }
159
+ export interface LibraryCatalogValidationIssue {
160
+ code: "duplicate-id" | "invalid-id" | "invalid-asset-path" | "missing-asset" | "invalid-destination" | "unknown-composed-item" | "unknown-related-item" | "composition-cycle" | "duplicate-variant" | "invalid-variant-id" | "invalid-license" | "invalid-source" | "invalid-dependency";
161
+ message: string;
162
+ itemId?: string;
163
+ path?: string;
164
+ }
165
+ export interface LibraryCatalogValidationResult {
166
+ valid: boolean;
167
+ issues: LibraryCatalogValidationIssue[];
168
+ }
169
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,6 @@
1
+ import type { LibraryCatalogValidationResult, LibraryItem } from "./types.js";
2
+ export declare function isSafeLibraryAssetPath(assetPath: string): boolean;
3
+ export declare function isSafeLibraryDestination(destination: string): boolean;
4
+ export declare function validateLibraryCatalog(items: readonly LibraryItem[]): LibraryCatalogValidationResult;
5
+ export declare function assertValidLibraryCatalog(items: readonly LibraryItem[]): void;
6
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,8BAA8B,EAC9B,WAAW,EACZ,MAAM,YAAY,CAAC;AAcpB,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAejE;AAED,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAsBrE;AAiCD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,SAAS,WAAW,EAAE,GAC5B,8BAA8B,CAuIhC;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,IAAI,CAM7E"}
@@ -0,0 +1,209 @@
1
+ import { existsSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ const ITEM_ID_PATTERN = /^[a-z0-9][a-z0-9-]*\/[a-z0-9][a-z0-9-]*$/;
5
+ const VARIANT_ID_PATTERN = /^[a-z0-9][a-z0-9-]*$/;
6
+ const PACKAGE_ROOT = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
7
+ const DESTINATION_TOKENS = [
8
+ "{{appDir}}",
9
+ "{{componentsDir}}",
10
+ "{{featuresDir}}",
11
+ ];
12
+ export function isSafeLibraryAssetPath(assetPath) {
13
+ if (!assetPath.startsWith("assets/") ||
14
+ assetPath.includes("\\") ||
15
+ assetPath.includes("\0")) {
16
+ return false;
17
+ }
18
+ if (path.posix.isAbsolute(assetPath) || /^[A-Za-z]:/.test(assetPath)) {
19
+ return false;
20
+ }
21
+ const segments = assetPath.split("/");
22
+ return segments.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
23
+ }
24
+ export function isSafeLibraryDestination(destination) {
25
+ if (!destination ||
26
+ destination.includes("\\") ||
27
+ destination.includes("\0")) {
28
+ return false;
29
+ }
30
+ let rendered = destination;
31
+ for (const token of DESTINATION_TOKENS) {
32
+ rendered = rendered.split(token).join("registry-root");
33
+ }
34
+ if (/\{\{[^{}]+\}\}/.test(rendered)) {
35
+ return false;
36
+ }
37
+ if (path.posix.isAbsolute(rendered) || /^[A-Za-z]:/.test(rendered)) {
38
+ return false;
39
+ }
40
+ const segments = rendered.split("/");
41
+ return segments.every((segment) => segment.length > 0 && segment !== "." && segment !== "..");
42
+ }
43
+ function validateAsset(item, value, issues) {
44
+ if (!isSafeLibraryAssetPath(value.path)) {
45
+ issues.push({
46
+ code: "invalid-asset-path",
47
+ itemId: item.id,
48
+ path: value.path,
49
+ message: `Asset path must remain below assets/: ${value.path}`,
50
+ });
51
+ }
52
+ else if (!existsSync(path.resolve(PACKAGE_ROOT, value.path))) {
53
+ issues.push({
54
+ code: "missing-asset",
55
+ itemId: item.id,
56
+ path: value.path,
57
+ message: `Bundled asset does not exist: ${value.path}`,
58
+ });
59
+ }
60
+ if (!isSafeLibraryDestination(value.destination)) {
61
+ issues.push({
62
+ code: "invalid-destination",
63
+ itemId: item.id,
64
+ path: value.destination,
65
+ message: `Destination must be a safe project-relative path: ${value.destination}`,
66
+ });
67
+ }
68
+ }
69
+ export function validateLibraryCatalog(items) {
70
+ const issues = [];
71
+ const byId = new Map();
72
+ for (const item of items) {
73
+ if (!ITEM_ID_PATTERN.test(item.id)) {
74
+ issues.push({
75
+ code: "invalid-id",
76
+ itemId: item.id,
77
+ message: `Invalid item id: ${item.id}`,
78
+ });
79
+ }
80
+ if (byId.has(item.id)) {
81
+ issues.push({
82
+ code: "duplicate-id",
83
+ itemId: item.id,
84
+ message: `Duplicate item id: ${item.id}`,
85
+ });
86
+ }
87
+ else {
88
+ byId.set(item.id, item);
89
+ }
90
+ if (item.source.license !== "MIT") {
91
+ issues.push({
92
+ code: "invalid-license",
93
+ itemId: item.id,
94
+ message: `${item.id} is not approved for source-copy redistribution.`,
95
+ });
96
+ }
97
+ if (!item.source.version.trim() ||
98
+ !item.source.repository.startsWith("https://") ||
99
+ !item.source.displayName.trim()) {
100
+ issues.push({
101
+ code: "invalid-source",
102
+ itemId: item.id,
103
+ message: `${item.id} must declare complete source provenance.`,
104
+ });
105
+ }
106
+ for (const dependency of item.dependencies) {
107
+ if (!dependency.name.trim() || !dependency.version.trim()) {
108
+ issues.push({
109
+ code: "invalid-dependency",
110
+ itemId: item.id,
111
+ message: `${item.id} contains an incomplete dependency declaration.`,
112
+ });
113
+ }
114
+ }
115
+ for (const value of item.assets) {
116
+ validateAsset(item, value, issues);
117
+ }
118
+ const variantIds = new Set();
119
+ for (const variant of item.variants) {
120
+ if (!VARIANT_ID_PATTERN.test(variant.id)) {
121
+ issues.push({
122
+ code: "invalid-variant-id",
123
+ itemId: item.id,
124
+ message: `Invalid variant id ${variant.id} on ${item.id}.`,
125
+ });
126
+ }
127
+ if (variantIds.has(variant.id)) {
128
+ issues.push({
129
+ code: "duplicate-variant",
130
+ itemId: item.id,
131
+ message: `Duplicate variant ${variant.id} on ${item.id}.`,
132
+ });
133
+ }
134
+ variantIds.add(variant.id);
135
+ for (const dependency of variant.dependencies ?? []) {
136
+ if (!dependency.name.trim() || !dependency.version.trim()) {
137
+ issues.push({
138
+ code: "invalid-dependency",
139
+ itemId: item.id,
140
+ message: `${item.id}/${variant.id} contains an incomplete dependency declaration.`,
141
+ });
142
+ }
143
+ }
144
+ for (const value of variant.assets ?? []) {
145
+ validateAsset(item, value, issues);
146
+ }
147
+ }
148
+ }
149
+ for (const item of items) {
150
+ for (const relatedId of item.relatedItems) {
151
+ if (!byId.has(relatedId)) {
152
+ issues.push({
153
+ code: "unknown-related-item",
154
+ itemId: item.id,
155
+ message: `${item.id} references unknown related item ${relatedId}.`,
156
+ });
157
+ }
158
+ }
159
+ for (const composedId of [
160
+ ...item.composedItems,
161
+ ...item.variants.flatMap((variant) => variant.composedItems ?? []),
162
+ ]) {
163
+ if (!byId.has(composedId)) {
164
+ issues.push({
165
+ code: "unknown-composed-item",
166
+ itemId: item.id,
167
+ message: `${item.id} composes unknown item ${composedId}.`,
168
+ });
169
+ }
170
+ }
171
+ }
172
+ const visiting = new Set();
173
+ const visited = new Set();
174
+ const findCycle = (itemId) => {
175
+ if (visiting.has(itemId)) {
176
+ issues.push({
177
+ code: "composition-cycle",
178
+ itemId,
179
+ message: `Composition cycle includes ${itemId}.`,
180
+ });
181
+ return;
182
+ }
183
+ if (visited.has(itemId))
184
+ return;
185
+ const item = byId.get(itemId);
186
+ if (!item)
187
+ return;
188
+ visiting.add(itemId);
189
+ const composedIds = [
190
+ ...item.composedItems,
191
+ ...item.variants.flatMap((variant) => variant.composedItems ?? []),
192
+ ];
193
+ for (const composedId of composedIds)
194
+ findCycle(composedId);
195
+ visiting.delete(itemId);
196
+ visited.add(itemId);
197
+ };
198
+ for (const item of items)
199
+ findCycle(item.id);
200
+ return { valid: issues.length === 0, issues };
201
+ }
202
+ export function assertValidLibraryCatalog(items) {
203
+ const result = validateLibraryCatalog(items);
204
+ if (!result.valid) {
205
+ const detail = result.issues.map((issue) => issue.message).join("\n");
206
+ throw new Error(`Invalid MDS Library catalog:\n${detail}`);
207
+ }
208
+ }
209
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@mr.dj2u/library-registry",
3
+ "version": "0.0.0",
4
+ "description": "Typed source-copy registry for reusable Expo components, screens, flows, and integrations",
5
+ "type": "module",
6
+ "repository": {
7
+ "type": "git",
8
+ "url": "git+https://github.com/DavidJGrimsley/mrdj-dev-suite.git",
9
+ "directory": "packages/library-registry"
10
+ },
11
+ "files": [
12
+ "dist",
13
+ "assets",
14
+ "THIRD_PARTY_NOTICES.md",
15
+ "LICENSE"
16
+ ],
17
+ "exports": {
18
+ ".": {
19
+ "import": "./dist/index.js",
20
+ "types": "./dist/index.d.ts"
21
+ }
22
+ },
23
+ "main": "./dist/index.js",
24
+ "types": "./dist/index.d.ts",
25
+ "scripts": {
26
+ "build": "tsc",
27
+ "type-check": "tsc --noEmit",
28
+ "lint": "eslint src tests",
29
+ "lint:fix": "eslint src tests --fix",
30
+ "test": "vitest run --passWithNoTests",
31
+ "prepack": "node ../../scripts/verify-publish-manifest.mjs .",
32
+ "dev": "tsc --watch",
33
+ "clean": "node -e \"const fs=require('node:fs'); for (const p of ['dist','tsconfig.tsbuildinfo']) fs.rmSync(p,{recursive:true,force:true});\""
34
+ },
35
+ "devDependencies": {
36
+ "@types/node": "^20.10.0",
37
+ "typescript": "^5.9.0"
38
+ },
39
+ "keywords": [
40
+ "expo",
41
+ "react-native",
42
+ "components",
43
+ "registry",
44
+ "templates"
45
+ ],
46
+ "author": "DJ",
47
+ "license": "MIT",
48
+ "publishConfig": {
49
+ "access": "public"
50
+ }
51
+ }