apprun 3.36.0 → 3.37.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 (93) hide show
  1. package/CHANGELOG.md +28 -0
  2. package/README.md +143 -25
  3. package/WHATSNEW.md +29 -12
  4. package/apprun-book.jpg +0 -0
  5. package/apprun.d.ts +136 -46
  6. package/cli/app.js +29 -0
  7. package/cli/index.html +13 -0
  8. package/{apprun-cli.js → cli/index.js} +8 -14
  9. package/dist/apprun-code.js +2 -0
  10. package/dist/apprun-code.js.map +1 -0
  11. package/dist/apprun-dev-tools.js +1 -2
  12. package/dist/apprun-dev-tools.js.map +1 -1
  13. package/dist/apprun-html.esm.js +7 -7
  14. package/dist/apprun-html.esm.js.map +1 -1
  15. package/dist/apprun-html.js +1 -1
  16. package/dist/apprun-html.js.map +1 -1
  17. package/dist/apprun-play-html.esm.js +7 -7
  18. package/dist/apprun-play-html.esm.js.map +1 -1
  19. package/dist/apprun-play.js +1 -1
  20. package/dist/apprun-play.js.map +1 -1
  21. package/dist/apprun.esm.js +1 -1
  22. package/dist/apprun.esm.js.map +1 -1
  23. package/dist/apprun.js +1 -1
  24. package/dist/apprun.js.map +1 -1
  25. package/dist/createState.js +2 -0
  26. package/dist/createState.js.map +1 -0
  27. package/esm/add-components.js +90 -0
  28. package/esm/add-components.js.map +1 -0
  29. package/esm/app.js +15 -8
  30. package/esm/app.js.map +1 -1
  31. package/esm/apprun-code.js +51 -16
  32. package/esm/apprun-code.js.map +1 -1
  33. package/esm/apprun-dev-tools.js +32 -32
  34. package/esm/apprun-dev-tools.js.map +1 -1
  35. package/esm/apprun-play.js +50 -17
  36. package/esm/apprun-play.js.map +1 -1
  37. package/esm/apprun.js +42 -11
  38. package/esm/apprun.js.map +1 -1
  39. package/esm/component.js +17 -20
  40. package/esm/component.js.map +1 -1
  41. package/esm/createState.js +9 -0
  42. package/esm/createState.js.map +1 -0
  43. package/esm/decorator.js.map +1 -1
  44. package/esm/directive.js +1 -1
  45. package/esm/directive.js.map +1 -1
  46. package/esm/router.js +241 -18
  47. package/esm/router.js.map +1 -1
  48. package/esm/shadow.js +1 -1
  49. package/esm/shadow.js.map +1 -1
  50. package/esm/type-utils.js +2 -3
  51. package/esm/type-utils.js.map +1 -1
  52. package/esm/vdom-my-new.js +327 -0
  53. package/esm/vdom-my-new.js.map +1 -0
  54. package/esm/vdom-my-prop-attr.js +227 -0
  55. package/esm/vdom-my-prop-attr.js.map +1 -0
  56. package/esm/vdom-my.js +114 -150
  57. package/esm/vdom-my.js.map +1 -1
  58. package/esm/vdom-patch.js +1 -1
  59. package/esm/vdom-patch.js.map +1 -1
  60. package/esm/version.js +1 -1
  61. package/esm/web-component.js +3 -4
  62. package/esm/web-component.js.map +1 -1
  63. package/index.html +5 -2
  64. package/jest.config.js +2 -2
  65. package/jest.setup.js +29 -3
  66. package/jsx-runtime.js +1 -1
  67. package/jsx-runtime.js.map +1 -1
  68. package/package.json +14 -14
  69. package/src/add-components.ts +103 -0
  70. package/src/app.ts +10 -19
  71. package/src/apprun-code.tsx +48 -10
  72. package/src/apprun-dev-tools.tsx +23 -27
  73. package/src/apprun-play.tsx +46 -9
  74. package/src/apprun.ts +49 -40
  75. package/src/component.ts +15 -8
  76. package/src/createState.ts +11 -0
  77. package/src/decorator.ts +2 -1
  78. package/src/router.ts +261 -17
  79. package/src/shadow.tsx +1 -1
  80. package/src/tsconfig.json +2 -2
  81. package/src/types.ts +62 -2
  82. package/src/vdom-my-new.ts +311 -0
  83. package/src/vdom-my-prop-attr.ts +241 -0
  84. package/src/vdom-my.ts +109 -134
  85. package/src/version.ts +1 -1
  86. package/src/web-component.ts +4 -10
  87. package/tsconfig.jest.json +15 -6
  88. package/tsconfig.json +3 -3
  89. package/webpack.config.cjs +3 -1
  90. package/cli/export.js +0 -92
  91. package/cli/import.js +0 -68
  92. package/plan/plan-apprun-bugfixes.md +0 -207
  93. package/src/types/apprun.d.ts +0 -56
package/esm/router.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AppRun Router Implementation
2
+ * AppRun Router Implementation with Hierarchical Matching
3
3
  *
4
4
  * This file provides URL routing capabilities:
5
5
  * 1. Hash-based routing (#/path)
@@ -22,6 +22,7 @@
22
22
  * - Route parameter parsing and injection into events
23
23
  * - URL pattern matching with parameter support
24
24
  * - Global and component-level route handling
25
+ * - **NEW: Hierarchical route matching** - progressively tries parent routes
25
26
  *
26
27
  * Type Safety Improvements (v3.35.1):
27
28
  * - Enhanced route type definitions
@@ -30,7 +31,7 @@
30
31
  *
31
32
  * Usage:
32
33
  * ```ts
33
- * // Handle routes
34
+ * // Basic routing
34
35
  * app.on('#/home', () => // Show home page);
35
36
  * app.on('#/users/:id', (id) => // Show user profile);
36
37
  * app.on('/api/*', (path) => // Handle API routes);
@@ -38,31 +39,253 @@
38
39
  * // Navigate programmatically
39
40
  * app.run('route', '#/home');
40
41
  * route('/users/123'); // Direct routing
42
+ *
43
+ * // Hierarchical matching examples
44
+ * app.on('/api', (operation, id) => // Handle /api/users/123);
45
+ * app.on('#users', (id, action) => // Handle #users/123/edit);
46
+ *
47
+ * // Hierarchical Route Matching (NEW):
48
+ * // For URL: /api/v1/users/123
49
+ * // Router tries: /api/v1/users/123 → /api/v1/users → /api/v1 → /api → 404
50
+ * // If handler found at /api, it receives: ('v1', 'users', '123')
51
+ *
52
+ * // Base Path Support (NEW):
53
+ * app.basePath = '/myapp'; // For sub-directory deployments
54
+ * // Links: <a href="/users/123"> (relative paths)
55
+ * // Navigation: /myapp/users/123 (full path)
56
+ * // Routing: /users/123 (base path stripped)
57
+ *
58
+ * // Empty Path Handling (NEW):
59
+ * // For URL: "" (empty)
60
+ * // Router tries: # → / → #/ → 404 (in priority order)
61
+ *
62
+ * // 404 Behavior (ENHANCED):
63
+ * // Fires only at minimal levels: /a, #a, #/a, a
64
+ * // Never tries root handlers: /, #, #/
41
65
  * ```
42
66
  */
43
67
  import app from './app';
44
- export const ROUTER_EVENT = '//';
45
- export const ROUTER_404_EVENT = '///';
46
- export const route = (url) => {
47
- if (app['lastUrl'] === url)
48
- return; // Prevent duplicate routing
49
- app['lastUrl'] = url;
68
+ // Helper functions for hierarchical routing
69
+ /**
70
+ * Extract clean path segments from URL
71
+ * @param url - The URL to parse
72
+ * @returns Array of path segments
73
+ */
74
+ function parsePathSegments(url) {
50
75
  if (!url)
51
- url = '#';
52
- if (url.startsWith('#')) {
53
- const [name, ...rest] = url.split('/');
54
- app.run(name, ...rest) || app.run(ROUTER_404_EVENT, name, ...rest);
55
- app.run(ROUTER_EVENT, name, ...rest);
76
+ return [];
77
+ // Handle different URL types
78
+ if (url.startsWith('#/')) {
79
+ return url.substring(2).split('/');
80
+ }
81
+ else if (url.startsWith('#')) {
82
+ return url.substring(1).split('/');
83
+ }
84
+ else if (url.startsWith('/')) {
85
+ return url.substring(1).split('/');
86
+ }
87
+ else {
88
+ return url.split('/');
89
+ }
90
+ }
91
+ /**
92
+ * Normalize trailing slash - convert /a/ to /a
93
+ * @param url - The URL to normalize
94
+ * @returns Normalized URL
95
+ */
96
+ function normalizeTrailingSlash(url) {
97
+ if (!url || url === '/' || url === '#' || url === '#/')
98
+ return url;
99
+ if (url.endsWith('/'))
100
+ return url.slice(0, -1);
101
+ return url;
102
+ }
103
+ /**
104
+ * Validate hierarchy depth and warn if too deep
105
+ * @param segments - Path segments to validate
106
+ */
107
+ function validateHierarchyDepth(segments) {
108
+ // Count non-empty segments for depth validation
109
+ const nonEmptySegments = segments.filter(Boolean);
110
+ if (nonEmptySegments.length > 11) {
111
+ console.warn(`Deep route hierarchy detected: ${nonEmptySegments.join('/')} (${nonEmptySegments.length} levels)`);
112
+ }
113
+ }
114
+ /**
115
+ * Strip base path from URL
116
+ * @param url - The URL to process
117
+ * @param basePath - The base path to remove
118
+ * @returns URL with base path removed
119
+ */
120
+ function stripBasePath(url, basePath) {
121
+ if (!basePath || basePath === '/' || basePath === '')
122
+ return url;
123
+ // Normalize base path
124
+ const normalizedBasePath = basePath.startsWith('/') ? basePath : '/' + basePath;
125
+ if (url.startsWith(normalizedBasePath)) {
126
+ const stripped = url.substring(normalizedBasePath.length);
127
+ return stripped.startsWith('/') ? stripped : '/' + stripped;
128
+ }
129
+ return url;
130
+ }
131
+ /**
132
+ * Generate hierarchy of routes to try (stops at minimal level)
133
+ * @param segments - Array of path segments
134
+ * @param routeType - Type of route (path, hash, hash-slash, non-prefixed)
135
+ * @returns Array of route names to try in order
136
+ */
137
+ function generateRouteHierarchy(segments, routeType) {
138
+ const hierarchy = [];
139
+ // Build hierarchy from most specific to least specific
140
+ for (let i = segments.length; i > 0; i--) {
141
+ const currentSegments = segments.slice(0, i);
142
+ let routeName = '';
143
+ switch (routeType) {
144
+ case 'path':
145
+ routeName = '/' + currentSegments.join('/');
146
+ break;
147
+ case 'hash':
148
+ routeName = '#' + currentSegments.join('/');
149
+ break;
150
+ case 'hash-slash':
151
+ routeName = '#/' + currentSegments.join('/');
152
+ break;
153
+ case 'non-prefixed':
154
+ routeName = currentSegments.join('/');
155
+ break;
156
+ }
157
+ hierarchy.push(routeName);
158
+ }
159
+ return hierarchy;
160
+ }
161
+ /**
162
+ * Find handler in hierarchy and return handler info
163
+ * @param hierarchy - Array of route names to try
164
+ * @param originalSegments - Original path segments
165
+ * @returns Handler info if found, null otherwise
166
+ */
167
+ function findHandlerInHierarchy(hierarchy, originalSegments) {
168
+ for (let i = 0; i < hierarchy.length; i++) {
169
+ const routeName = hierarchy[i];
170
+ const subscribers = app.find(routeName);
171
+ if (subscribers && subscribers.length > 0) {
172
+ // Found handler - calculate remaining parameters
173
+ const handlerDepth = hierarchy.length - i;
174
+ const parameters = originalSegments.slice(handlerDepth);
175
+ return {
176
+ eventName: routeName,
177
+ parameters: parameters
178
+ };
179
+ }
180
+ }
181
+ return null;
182
+ }
183
+ /**
184
+ * Handle empty path with priority order: # → / → #/ → 404
185
+ */
186
+ function handleEmptyPath() {
187
+ // Try # first
188
+ const hashSubscribers = app.find('#');
189
+ if (hashSubscribers && hashSubscribers.length > 0) {
190
+ app.run('#');
191
+ app.run(ROUTER_EVENT, '#');
192
+ return;
193
+ }
194
+ // Try / second
195
+ const pathSubscribers = app.find('/');
196
+ if (pathSubscribers && pathSubscribers.length > 0) {
197
+ app.run('/');
198
+ app.run(ROUTER_EVENT, '/');
199
+ return;
200
+ }
201
+ // Try #/ third
202
+ const hashSlashSubscribers = app.find('#/');
203
+ if (hashSlashSubscribers && hashSlashSubscribers.length > 0) {
204
+ app.run('#/');
205
+ app.run(ROUTER_EVENT, '#/');
206
+ return;
207
+ }
208
+ // Fire 404 if no handlers found
209
+ console.warn('No subscribers for event: ');
210
+ app.run(ROUTER_404_EVENT, '');
211
+ app.run(ROUTER_EVENT, '');
212
+ }
213
+ /**
214
+ * Main hierarchical routing logic
215
+ * @param url - The URL to route
216
+ */
217
+ function routeWithHierarchy(url) {
218
+ // Handle empty path
219
+ if (!url) {
220
+ handleEmptyPath();
221
+ return;
222
+ }
223
+ // Normalize trailing slash
224
+ url = normalizeTrailingSlash(url);
225
+ // Strip base path if configured
226
+ const basePath = app['basePath'];
227
+ if (basePath) {
228
+ url = stripBasePath(url, basePath);
229
+ }
230
+ // Parse segments and validate depth
231
+ const segments = parsePathSegments(url);
232
+ validateHierarchyDepth(segments);
233
+ // Determine route type
234
+ let routeType;
235
+ if (url.startsWith('#/')) {
236
+ routeType = 'hash-slash';
237
+ }
238
+ else if (url.startsWith('#')) {
239
+ routeType = 'hash';
56
240
  }
57
241
  else if (url.startsWith('/')) {
58
- const [_, name, ...rest] = url.split('/');
59
- app.run('/' + name, ...rest) || app.run(ROUTER_404_EVENT, '/' + name, ...rest);
60
- app.run(ROUTER_EVENT, '/' + name, ...rest);
242
+ routeType = 'path';
243
+ }
244
+ else {
245
+ routeType = 'non-prefixed';
246
+ }
247
+ // Generate hierarchy
248
+ const hierarchy = generateRouteHierarchy(segments, routeType);
249
+ // Find handler in hierarchy
250
+ const handlerInfo = findHandlerInHierarchy(hierarchy, segments);
251
+ if (handlerInfo) {
252
+ // Found handler - publish route with parameters
253
+ publishRoute(handlerInfo.eventName, ...handlerInfo.parameters);
254
+ }
255
+ else {
256
+ // No handler found - fire 404 with original URL
257
+ if (hierarchy.length > 0) {
258
+ const minimalRoute = hierarchy[hierarchy.length - 1];
259
+ console.warn(`No subscribers for event: ${minimalRoute}`);
260
+ app.run(ROUTER_404_EVENT, url);
261
+ app.run(ROUTER_EVENT, url);
262
+ }
263
+ else {
264
+ handleEmptyPath();
265
+ }
266
+ }
267
+ }
268
+ const publishRoute = (name, ...args) => {
269
+ if (!name || name === ROUTER_EVENT || name === ROUTER_404_EVENT)
270
+ return;
271
+ const subscribers = app.find(name);
272
+ if (!subscribers || subscribers.length === 0) {
273
+ console.warn(`No subscribers for event: ${name}`);
274
+ app.run(ROUTER_404_EVENT, name, ...args);
61
275
  }
62
276
  else {
63
- app.run(url) || app.run(ROUTER_404_EVENT, url);
64
- app.run(ROUTER_EVENT, url);
277
+ app.run(name, ...args);
65
278
  }
279
+ app.run(ROUTER_EVENT, name, ...args);
280
+ };
281
+ export const ROUTER_EVENT = '//';
282
+ export const ROUTER_404_EVENT = '///';
283
+ export const route = (url) => {
284
+ if (app['lastUrl'] === url)
285
+ return; // Prevent duplicate routing
286
+ app['lastUrl'] = url;
287
+ // Use hierarchical routing logic
288
+ routeWithHierarchy(url);
66
289
  };
67
290
  export default route;
68
291
  //# sourceMappingURL=router.js.map
package/esm/router.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AAEH,OAAO,GAAG,MAAM,OAAO,CAAC;AAIxB,MAAM,CAAC,MAAM,YAAY,GAAW,IAAI,CAAC;AACzC,MAAM,CAAC,MAAM,gBAAgB,GAAW,KAAK,CAAC;AAC9C,MAAM,CAAC,MAAM,KAAK,GAAU,CAAC,GAAW,EAAE,EAAE;IAC1C,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,GAAG;QAAE,OAAO,CAAC,4BAA4B;IAChE,GAAG,CAAC,SAAS,CAAC,GAAG,GAAG,CAAC;IACrB,IAAI,CAAC,GAAG;QAAE,GAAG,GAAG,GAAG,CAAC;IACpB,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QACnE,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IACvC,CAAC;SAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/B,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;QAC/E,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAC/C,GAAG,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC,CAAA;AACD,eAAe,KAAK,CAAC"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
package/esm/shadow.js CHANGED
@@ -1,4 +1,4 @@
1
- import app from './app';
1
+ import app from './apprun';
2
2
  export default (_, children) => {
3
3
  const el = document.createElement('section');
4
4
  el.attachShadow({ mode: 'open' });
package/esm/shadow.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../src/shadow.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,OAAO,CAAC;AAExB,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;IAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpC,OAAO,0BAAG,EAAE,CAAI,CAAC;AACnB,CAAC,CAAC"}
1
+ {"version":3,"file":"shadow.js","sourceRoot":"","sources":["../src/shadow.tsx"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,UAAU,CAAC;AAE3B,eAAe,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;IAC7B,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAC7C,EAAE,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACpC,OAAO,0BAAG,EAAE,CAAI,CAAC;AACnB,CAAC,CAAC"}
package/esm/type-utils.js CHANGED
@@ -12,7 +12,7 @@
12
12
  * Safely cast event target to specific HTML element type with null check
13
13
  */
14
14
  export function safeEventTarget(event) {
15
- return (event === null || event === void 0 ? void 0 : event.target) instanceof HTMLElement ? event.target : null;
15
+ return event?.target instanceof HTMLElement ? event.target : null;
16
16
  }
17
17
  /**
18
18
  * Type guard to check if an object is a valid function
@@ -40,9 +40,8 @@ export function safeGlobalAssign(globalObj, assignments) {
40
40
  * Safely get property from global object with fallback
41
41
  */
42
42
  export function safeGlobalGet(globalObj, property, fallback) {
43
- var _a;
44
43
  if (typeof globalObj === 'object' && globalObj !== null) {
45
- return (_a = globalObj[property]) !== null && _a !== void 0 ? _a : fallback;
44
+ return globalObj[property] ?? fallback;
46
45
  }
47
46
  return fallback;
48
47
  }
@@ -1 +1 @@
1
- {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../src/type-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAsC,KAAY;IAC/E,OAAO,CAAA,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,MAAM,aAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,GAAG,YAAY,WAAW,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAc,EACd,WAAc;IAEd,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrC,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAc,EACd,QAAgB,EAChB,QAAY;;IAEZ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,MAAA,SAAS,CAAC,QAAQ,CAAC,mCAAI,QAAQ,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAA8B,QAAQ;IAEtC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAU;IAEV,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAa,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,EAA0C,EAC1C,IAAO,EACP,OAAa,EACb,YAAqB;IAErB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"type-utils.js","sourceRoot":"","sources":["../src/type-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;GAEG;AACH,MAAM,UAAU,eAAe,CAAsC,KAAY;IAC/E,OAAO,KAAK,EAAE,MAAM,YAAY,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,MAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,GAAQ;IACjC,OAAO,OAAO,GAAG,KAAK,UAAU,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,OAAO,GAAG,YAAY,WAAW,CAAC;AACpC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAc,EACd,WAAc;IAEd,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACrC,SAAS,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,SAAc,EACd,QAAgB,EAChB,QAAY;IAEZ,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACxD,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACzC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,QAAgB,EAChB,UAA8B,QAAQ;IAEtC,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,aAAa,CAAI,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,qBAAqB,QAAQ,EAAE,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAChC,EAAU;IAEV,IAAI,CAAC;QACH,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAa,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;QAC1D,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,EAA0C,EAC1C,IAAO,EACP,OAAa,EACb,YAAqB;IAErB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;QACpB,IAAI,YAAY,EAAE,CAAC;YACjB,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACjC,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,CAAC;QACH,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IACzD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,2BAA2B,EAAE,KAAK,CAAC,CAAC;QAClE,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}