@absolutejs/absolute 0.19.0-beta.1047 → 0.19.0-beta.1049

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/cli/index.js CHANGED
@@ -175400,7 +175400,10 @@ var cliTag4 = (color, message) => `\x1B[2m${formatTimestamp()}\x1B[0m ${color}[c
175400
175400
  return null;
175401
175401
  return join27(packageDir, entry);
175402
175402
  }, collectRuntimeRewriteRoots = (distDir) => collectFiles2(distDir).filter((filePath) => isRuntimeJsFile(filePath) && !isNodeModulesPath(filePath)), toTopLevelPackage = (specifier) => specifier.split("/").slice(0, specifier.startsWith("@") ? 2 : 1).join("/"), FRAMEWORK_PACKAGE_NAME = "@absolutejs/absolute", copyChunkReferencedPackages = (distDir, seen) => {
175403
+ const distRoot = resolve17(distDir);
175403
175404
  for (const filePath of collectRuntimeRewriteRoots(distDir)) {
175405
+ if (resolve17(dirname13(filePath)) === distRoot)
175406
+ continue;
175404
175407
  const source = readFileSync28(filePath, "utf-8");
175405
175408
  for (const match of source.matchAll(MODULE_SPECIFIER_RE)) {
175406
175409
  const specifier = match[3];
@@ -0,0 +1,6 @@
1
+ import type { AuthPanelState } from '../../../../types/authPanel';
2
+ type AuthPanelProps = {
3
+ state: AuthPanelState;
4
+ };
5
+ export declare const AuthPanel: ({ state }: AuthPanelProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,10 @@
1
+ type AuthFeatureMeta = {
2
+ blurb: string;
3
+ configKey: string;
4
+ id: string;
5
+ kind: 'behavior' | 'routes';
6
+ label: string;
7
+ };
8
+ export declare const AUTH_CORE_ROUTES: string[];
9
+ export declare const AUTH_FEATURES: AuthFeatureMeta[];
10
+ export {};
@@ -0,0 +1,2 @@
1
+ import type { AuthPanelState } from '../../../../types/authPanel';
2
+ export declare const resolveAuthState: (cwd: string) => AuthPanelState;
@@ -0,0 +1,6 @@
1
+ import type { AbsoluteConfigState } from '../../../../types/absoluteConfig';
2
+ type IntegrationsPanelProps = {
3
+ state: AbsoluteConfigState;
4
+ };
5
+ export declare const IntegrationsPanel: ({ state: initial }: IntegrationsPanelProps) => import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -1 +1 @@
1
- export declare const CONFIG_CSS = "\n.cfg {\n\tposition: relative;\n\tz-index: 1;\n\tdisplay: flex;\n\talign-items: stretch;\n\tmin-height: 100vh;\n}\n\n.cfg-nav {\n\tflex: 0 0 240px;\n\twidth: 240px;\n\theight: 100vh;\n\tposition: sticky;\n\ttop: 0;\n\talign-self: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 26px;\n\tpadding: 30px 18px;\n\tborder-right: 1px solid var(--border);\n\tbackground: rgba(17, 19, 23, 0.6);\n}\n\n.cfg-brand { display: flex; flex-direction: column; gap: 4px; }\n.cfg-word { font-family: var(--serif); font-size: 26px; line-height: 1; }\n.cfg-word em { color: var(--accent); font-style: italic; }\n.cfg-tag {\n\tcolor: var(--faint);\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1.5px;\n}\n\n.cfg-panels { display: flex; flex-direction: column; gap: 4px; }\n.cfg-rail-label {\n\tcolor: var(--faint);\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1.5px;\n\tpadding: 0 10px 8px;\n}\n\n.cfg-item {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tpadding: 10px 12px;\n\tborder-radius: 8px;\n\tborder: 1px solid transparent;\n\tcolor: var(--text);\n\ttext-decoration: none;\n\ttransition: background 0.12s ease, border-color 0.12s ease;\n}\n.cfg-item:hover { background: var(--panel-2); }\n.cfg-item[data-active='true'] { background: var(--panel-2); border-color: var(--border); }\n.cfg-item[data-soon='true'] { opacity: 0.6; }\n.cfg-item-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.cfg-item-name { font-weight: 500; font-size: 13px; }\n.cfg-item-blurb { color: var(--dim); font-size: 11px; }\n.cfg-soon {\n\tfont-size: 9px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1px;\n\tcolor: var(--bg);\n\tbackground: var(--accent-dim);\n\tpadding: 2px 6px;\n\tborder-radius: 999px;\n}\n\n.cfg-main { flex: 1 1 auto; min-width: 0; }\n\n.cfg-placeholder {\n\tposition: relative;\n\tz-index: 1;\n\tmax-width: 760px;\n\tmargin: 0 auto;\n\tpadding: 120px 28px;\n\ttext-align: center;\n}\n.cfg-placeholder-title { font-family: var(--serif); font-size: 40px; margin-bottom: 12px; }\n.cfg-placeholder-title em { color: var(--accent); font-style: italic; }\n.cfg-placeholder-text { color: var(--dim); font-size: 14px; max-width: 460px; margin: 0 auto; }\n.cfg-loading { animation: cfg-pulse 1.2s ease-in-out infinite; }\n@keyframes cfg-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }\n\n/* ---- recursive field editor ---- */\n.fe-block { align-items: flex-start; }\n.fe-root { margin-top: 10px; width: 100%; }\n.fe-actions { flex-direction: column; gap: 6px; }\n.fe-object {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 10px;\n\tborder-left: 2px solid var(--border);\n\tpadding-left: 14px;\n}\n.fe-field { display: flex; flex-direction: column; gap: 4px; }\n.fe-label { display: flex; align-items: center; gap: 8px; }\n.fe-name { color: var(--dim); font-size: 12px; }\n.fe-array, .fe-record, .fe-union { display: flex; flex-direction: column; gap: 6px; }\n.fe-item, .fe-entry { display: flex; align-items: flex-start; gap: 6px; }\n.fe-key { min-width: 160px; flex: 0 0 auto; }\n.fe-add {\n\talign-self: flex-start;\n\tfont-family: var(--mono);\n\tfont-size: 11px;\n\tcolor: var(--accent);\n\tbackground: transparent;\n\tborder: 1px dashed var(--border);\n\tborder-radius: 7px;\n\tpadding: 4px 10px;\n\tcursor: pointer;\n}\n.fe-add:hover { border-color: var(--accent); }\n.fe-remove {\n\tfont-family: var(--mono);\n\tfont-size: 11px;\n\tcolor: var(--dim);\n\tbackground: transparent;\n\tborder: 1px solid var(--border);\n\tborder-radius: 7px;\n\tpadding: 4px 8px;\n\tcursor: pointer;\n}\n.fe-remove:hover { color: var(--error); border-color: var(--error); }\n.fe-type { color: var(--faint); font-size: 11px; margin-top: 4px; }\n.fe-raw { width: 100%; }\n.fe-raw .opts-input { width: 100%; }\n\n@media (max-width: 720px) {\n\t.cfg { flex-direction: column; }\n\t.cfg-nav {\n\t\twidth: auto;\n\t\tflex-basis: auto;\n\t\theight: auto;\n\t\tposition: static;\n\t\tborder-right: none;\n\t\tborder-bottom: 1px solid var(--border);\n\t}\n}\n";
1
+ export declare const CONFIG_CSS = "\n.cfg {\n\tposition: relative;\n\tz-index: 1;\n\tdisplay: flex;\n\talign-items: stretch;\n\tmin-height: 100vh;\n}\n\n.cfg-nav {\n\tflex: 0 0 240px;\n\twidth: 240px;\n\theight: 100vh;\n\tposition: sticky;\n\ttop: 0;\n\talign-self: flex-start;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 26px;\n\tpadding: 30px 18px;\n\tborder-right: 1px solid var(--border);\n\tbackground: rgba(17, 19, 23, 0.6);\n}\n\n.cfg-brand { display: flex; flex-direction: column; gap: 4px; }\n.cfg-word { font-family: var(--serif); font-size: 26px; line-height: 1; }\n.cfg-word em { color: var(--accent); font-style: italic; }\n.cfg-tag {\n\tcolor: var(--faint);\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1.5px;\n}\n\n.cfg-panels { display: flex; flex-direction: column; gap: 4px; }\n.cfg-rail-label {\n\tcolor: var(--faint);\n\tfont-size: 10px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1.5px;\n\tpadding: 0 10px 8px;\n}\n\n.cfg-item {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 2px;\n\tpadding: 10px 12px;\n\tborder-radius: 8px;\n\tborder: 1px solid transparent;\n\tcolor: var(--text);\n\ttext-decoration: none;\n\ttransition: background 0.12s ease, border-color 0.12s ease;\n}\n.cfg-item:hover { background: var(--panel-2); }\n.cfg-item[data-active='true'] { background: var(--panel-2); border-color: var(--border); }\n.cfg-item[data-soon='true'] { opacity: 0.6; }\n.cfg-item-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }\n.cfg-item-name { font-weight: 500; font-size: 13px; }\n.cfg-item-blurb { color: var(--dim); font-size: 11px; }\n.cfg-soon {\n\tfont-size: 9px;\n\ttext-transform: uppercase;\n\tletter-spacing: 1px;\n\tcolor: var(--bg);\n\tbackground: var(--accent-dim);\n\tpadding: 2px 6px;\n\tborder-radius: 999px;\n}\n\n.cfg-main { flex: 1 1 auto; min-width: 0; }\n\n.cfg-placeholder {\n\tposition: relative;\n\tz-index: 1;\n\tmax-width: 760px;\n\tmargin: 0 auto;\n\tpadding: 120px 28px;\n\ttext-align: center;\n}\n.cfg-placeholder-title { font-family: var(--serif); font-size: 40px; margin-bottom: 12px; }\n.cfg-placeholder-title em { color: var(--accent); font-style: italic; }\n.cfg-placeholder-text { color: var(--dim); font-size: 14px; max-width: 460px; margin: 0 auto; }\n.cfg-loading { animation: cfg-pulse 1.2s ease-in-out infinite; }\n@keyframes cfg-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }\n\n/* ---- recursive field editor ---- */\n.fe-block { align-items: flex-start; }\n.fe-root { margin-top: 10px; width: 100%; }\n.fe-actions { flex-direction: column; gap: 6px; }\n.fe-object {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: 10px;\n\tborder-left: 2px solid var(--border);\n\tpadding-left: 14px;\n}\n.fe-field { display: flex; flex-direction: column; gap: 4px; }\n.fe-label { display: flex; align-items: center; gap: 8px; }\n.fe-name { color: var(--dim); font-size: 12px; }\n.fe-array, .fe-record, .fe-union { display: flex; flex-direction: column; gap: 6px; }\n.fe-item, .fe-entry { display: flex; align-items: flex-start; gap: 6px; }\n.fe-key { min-width: 160px; flex: 0 0 auto; }\n.fe-add {\n\talign-self: flex-start;\n\tfont-family: var(--mono);\n\tfont-size: 11px;\n\tcolor: var(--accent);\n\tbackground: transparent;\n\tborder: 1px dashed var(--border);\n\tborder-radius: 7px;\n\tpadding: 4px 10px;\n\tcursor: pointer;\n}\n.fe-add:hover { border-color: var(--accent); }\n.fe-remove {\n\tfont-family: var(--mono);\n\tfont-size: 11px;\n\tcolor: var(--dim);\n\tbackground: transparent;\n\tborder: 1px solid var(--border);\n\tborder-radius: 7px;\n\tpadding: 4px 8px;\n\tcursor: pointer;\n}\n.fe-remove:hover { color: var(--error); border-color: var(--error); }\n.fe-type { color: var(--faint); font-size: 11px; margin-top: 4px; }\n.fe-raw { width: 100%; }\n.fe-raw .opts-input { width: 100%; }\n\n/* ---- integrations panel ---- */\n.intg-note {\n\tfont-size: 11.5px;\n\tcolor: var(--warn);\n\tmargin-top: 6px;\n\tmax-width: 64ch;\n\tline-height: 1.45;\n}\n.intg-code {\n\tfont-family: var(--mono);\n\tfont-size: 11.5px;\n\tcolor: var(--accent-dim);\n\tbackground: var(--bg);\n\tborder: 1px solid var(--border);\n\tborder-radius: 7px;\n\tpadding: 7px 10px;\n\tmargin-top: 8px;\n\toverflow-x: auto;\n\twhite-space: pre;\n}\n\n/* ---- auth panel ---- */\n.auth-banner {\n\tfont-size: 12px;\n\tcolor: var(--dim);\n\tbackground: var(--panel);\n\tborder: 1px solid var(--border);\n\tborder-radius: 9px;\n\tpadding: 10px 14px;\n\tmargin-bottom: 18px;\n\tline-height: 1.5;\n}\n.auth-banner.warn { color: var(--warn); border-color: rgba(240, 180, 41, 0.25); }\n.auth-banner code { color: var(--accent-dim); }\n.auth-chips { display: flex; flex-wrap: wrap; gap: 7px; }\n.auth-chip {\n\tfont-family: var(--mono);\n\tfont-size: 11px;\n\tcolor: var(--dim);\n\tbackground: var(--bg);\n\tborder: 1px solid var(--border);\n\tborder-radius: 7px;\n\tpadding: 4px 9px;\n}\n.auth-links { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 10px; }\n.auth-link { font-size: 12px; color: var(--accent); text-decoration: none; }\n.auth-link:hover { text-decoration: underline; }\n\n@media (max-width: 720px) {\n\t.cfg { flex-direction: column; }\n\t.cfg-nav {\n\t\twidth: auto;\n\t\tflex-basis: auto;\n\t\theight: auto;\n\t\tposition: static;\n\t\tborder-right: none;\n\t\tborder-bottom: 1px solid var(--border);\n\t}\n}\n";
@@ -77,6 +77,30 @@ export declare const launchConfig: (args: string[], cwd?: string) => Promise<Ely
77
77
  };
78
78
  };
79
79
  };
80
+ } & {
81
+ integrations: {
82
+ get: {
83
+ body: unknown;
84
+ params: {};
85
+ query: unknown;
86
+ headers: unknown;
87
+ response: {
88
+ 200: Response;
89
+ };
90
+ };
91
+ };
92
+ } & {
93
+ auth: {
94
+ get: {
95
+ body: unknown;
96
+ params: {};
97
+ query: unknown;
98
+ headers: unknown;
99
+ response: {
100
+ 200: Response;
101
+ };
102
+ };
103
+ };
80
104
  } & {
81
105
  package: {
82
106
  get: {
@@ -232,6 +256,20 @@ export declare const launchConfig: (args: string[], cwd?: string) => Promise<Ely
232
256
  };
233
257
  };
234
258
  };
259
+ } & {
260
+ api: {
261
+ auth: {
262
+ get: {
263
+ body: unknown;
264
+ params: {};
265
+ query: unknown;
266
+ headers: unknown;
267
+ response: {
268
+ 200: import("../../../types/authPanel").AuthPanelState;
269
+ };
270
+ };
271
+ };
272
+ };
235
273
  } & {
236
274
  api: {
237
275
  package: {
@@ -0,0 +1,29 @@
1
+ /** One @absolutejs/auth capability, paired with whether the scanned app actually
2
+ * configured it. `kind` separates features that mount HTTP routes from those that
3
+ * only change behavior (emit events, add a derive, throttle) so the panel can say
4
+ * what each one does. */
5
+ export type AuthFeatureStatus = {
6
+ blurb: string;
7
+ configKey: string;
8
+ configured: boolean;
9
+ id: string;
10
+ kind: 'behavior' | 'routes';
11
+ label: string;
12
+ };
13
+ /** Read-only introspection of an app's @absolutejs/auth setup, produced by
14
+ * `resolveAuthState` and rendered by the Auth panel. The config lives in code
15
+ * (the `auth({...})` call), so `introspected` records whether we could actually
16
+ * read the configured keys — when false the panel shows the full catalog as a
17
+ * reference instead of a per-app status. */
18
+ export type AuthPanelState = {
19
+ declaredVersion: string | null;
20
+ features: AuthFeatureStatus[];
21
+ installed: boolean;
22
+ installedVersion: string | null;
23
+ introspected: boolean;
24
+ npmUrl: string;
25
+ providerCount: number | null;
26
+ repoUrl: string;
27
+ setupPath: string | null;
28
+ usesSpread: boolean;
29
+ };
@@ -1,4 +1,4 @@
1
- export type ConfigPanelId = 'absolute' | 'package' | 'eslint' | 'tsconfig' | 'prettier';
1
+ export type ConfigPanelId = 'absolute' | 'integrations' | 'auth' | 'package' | 'eslint' | 'tsconfig' | 'prettier';
2
2
  export type ConfigPanelStatus = 'ready' | 'soon';
3
3
  export type ConfigPanelMeta = {
4
4
  /** One-line description shown under the panel name in the sidebar. */
package/package.json CHANGED
@@ -413,7 +413,7 @@
413
413
  ]
414
414
  }
415
415
  },
416
- "version": "0.19.0-beta.1047",
416
+ "version": "0.19.0-beta.1049",
417
417
  "workspaces": [
418
418
  "tests/fixtures/*",
419
419
  "tests/fixtures/_packages/*"