@makroz/web 1.2.4 → 1.2.6-rc14
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/README.md +1 -1
- package/bin/mk-update.js +249 -0
- package/dist/auth/AuthStorageAdapter.d.ts +74 -0
- package/dist/auth/AuthStorageAdapter.d.ts.map +1 -0
- package/dist/auth/AuthStorageAdapter.js +140 -0
- package/dist/auth/AuthStorageAdapter.js.map +1 -0
- package/dist/auth/MkAuthProvider.d.ts +11 -2
- package/dist/auth/MkAuthProvider.d.ts.map +1 -1
- package/dist/auth/MkAuthProvider.js +15 -25
- package/dist/auth/MkAuthProvider.js.map +1 -1
- package/dist/components/MkFileUpload.d.ts.map +1 -1
- package/dist/components/MkFileUpload.js +36 -2
- package/dist/components/MkFileUpload.js.map +1 -1
- package/dist/components/MkTable.d.ts +8 -1
- package/dist/components/MkTable.d.ts.map +1 -1
- package/dist/components/MkTable.js +28 -2
- package/dist/components/MkTable.js.map +1 -1
- package/dist/hooks/useApi.d.ts +21 -5
- package/dist/hooks/useApi.d.ts.map +1 -1
- package/dist/hooks/useApi.js +83 -63
- package/dist/hooks/useApi.js.map +1 -1
- package/dist/hooks/useMkInfiniteList.d.ts +1 -1
- package/dist/hooks/useMkList.d.ts +8 -12
- package/dist/hooks/useMkList.d.ts.map +1 -1
- package/dist/hooks/useMkList.js +23 -9
- package/dist/hooks/useMkList.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/eslint-plugin-mk/__tests__/no-cross-module-import-dynamic.test.js +89 -0
- package/eslint-plugin-mk/rules/no-cross-module-import.js +16 -0
- package/package.json +7 -3
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ Librería de componentes UI para proyectos Web (React). Enfocada en performance
|
|
|
5
5
|
## Características Core
|
|
6
6
|
- **Native CSS Theming**: Todo el look se controla via variables CSS (`--mk-primary`, etc.). Sin Tailwind.
|
|
7
7
|
- **Micro-Animations**: Transiciones fluidas y estados activos integrados.
|
|
8
|
-
- **useApi Hook**: Comunicación estandarizada con backend MK-Director, manejando loading/error/success automáticamente.
|
|
8
|
+
- **useApi Hook**: Comunicación estandarizada con backend MK-Director, manejando loading/error/success automáticamente. AbortController wired up on unmount and param change, `response.ok` checked before parsing JSON, default 30s timeout. Returned by `useApi()` directly so consumer call sites do not need to change.
|
|
9
9
|
|
|
10
10
|
## Instalación & Tematización
|
|
11
11
|
Importa los estilos en tu root:
|
package/bin/mk-update.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import fs from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import { execSync } from 'child_process';
|
|
6
|
+
import readline from 'readline';
|
|
7
|
+
|
|
8
|
+
function detectPackageManager() {
|
|
9
|
+
if (fs.existsSync(path.join(process.cwd(), 'pnpm-lock.yaml'))) {
|
|
10
|
+
return 'pnpm';
|
|
11
|
+
}
|
|
12
|
+
if (fs.existsSync(path.join(process.cwd(), 'yarn.lock'))) {
|
|
13
|
+
return 'yarn';
|
|
14
|
+
}
|
|
15
|
+
return 'npm';
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function getInstalledVersion(packageName) {
|
|
19
|
+
try {
|
|
20
|
+
const pkgJsonPath = path.join(process.cwd(), 'node_modules', packageName, 'package.json');
|
|
21
|
+
if (fs.existsSync(pkgJsonPath)) {
|
|
22
|
+
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
|
|
23
|
+
return pkg.version || 'unknown';
|
|
24
|
+
}
|
|
25
|
+
} catch {
|
|
26
|
+
// silent fallback
|
|
27
|
+
}
|
|
28
|
+
return 'unknown';
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
function getLatestLocalVersion(spec) {
|
|
32
|
+
try {
|
|
33
|
+
const relativePath = spec.replace(/^file:/, '');
|
|
34
|
+
const absolutePath = path.resolve(process.cwd(), relativePath);
|
|
35
|
+
const pkgJsonPath = path.join(absolutePath, 'package.json');
|
|
36
|
+
if (fs.existsSync(pkgJsonPath)) {
|
|
37
|
+
const pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
|
|
38
|
+
return pkg.version || 'unknown';
|
|
39
|
+
}
|
|
40
|
+
} catch {
|
|
41
|
+
// silent fallback
|
|
42
|
+
}
|
|
43
|
+
return 'unknown';
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
function getLatestRegistryVersion(packageName) {
|
|
47
|
+
try {
|
|
48
|
+
const stdout = execSync(`npm view ${packageName} version`, {
|
|
49
|
+
encoding: 'utf8',
|
|
50
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
51
|
+
timeout: 5000,
|
|
52
|
+
});
|
|
53
|
+
return stdout.trim() || 'unknown';
|
|
54
|
+
} catch {
|
|
55
|
+
// silent fallback
|
|
56
|
+
}
|
|
57
|
+
return 'unknown';
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
async function run() {
|
|
61
|
+
const args = process.argv.slice(2);
|
|
62
|
+
const toLocal = args.includes('--local') || args.includes('--dev');
|
|
63
|
+
const toProd = args.includes('--prod') || args.includes('--registry') || args.includes('--remote');
|
|
64
|
+
|
|
65
|
+
const pkgJsonPath = path.join(process.cwd(), 'package.json');
|
|
66
|
+
if (!fs.existsSync(pkgJsonPath)) {
|
|
67
|
+
console.error('❌ Error: No se encontró package.json en el directorio actual.');
|
|
68
|
+
process.exit(1);
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
let pkg;
|
|
72
|
+
try {
|
|
73
|
+
pkg = JSON.parse(fs.readFileSync(pkgJsonPath, 'utf8'));
|
|
74
|
+
} catch (e) {
|
|
75
|
+
console.error(`❌ Error al leer package.json: ${e.message}`);
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
// --- MODE: Toggle local/production dependencies ---
|
|
80
|
+
if (toLocal || toProd) {
|
|
81
|
+
console.log(`\n🔄 Cambiando dependencias a modo: ${toLocal ? 'DESARROLLO (Local)' : 'PRODUCCIÓN (Nube)'}...\n`);
|
|
82
|
+
|
|
83
|
+
const dependencies = pkg.dependencies || {};
|
|
84
|
+
const devDependencies = pkg.devDependencies || {};
|
|
85
|
+
let modified = false;
|
|
86
|
+
|
|
87
|
+
const updateSection = (section) => {
|
|
88
|
+
for (const name in section) {
|
|
89
|
+
if (name.startsWith('@makroz/')) {
|
|
90
|
+
const spec = section[name];
|
|
91
|
+
if (toLocal) {
|
|
92
|
+
const folder = name.replace('@makroz/', 'mk-');
|
|
93
|
+
const localSpec = `file:../../mk-director/packages/${folder}`;
|
|
94
|
+
if (spec !== localSpec) {
|
|
95
|
+
section[name] = localSpec;
|
|
96
|
+
modified = true;
|
|
97
|
+
console.log(` 🔄 ${name}: ${spec} -> ${localSpec}`);
|
|
98
|
+
}
|
|
99
|
+
} else if (toProd) {
|
|
100
|
+
if (spec.startsWith('file:')) {
|
|
101
|
+
const latest = getLatestRegistryVersion(name);
|
|
102
|
+
if (latest !== 'unknown') {
|
|
103
|
+
const prodSpec = `^${latest}`;
|
|
104
|
+
section[name] = prodSpec;
|
|
105
|
+
modified = true;
|
|
106
|
+
console.log(` 🔄 ${name}: ${spec} -> ${prodSpec}`);
|
|
107
|
+
} else {
|
|
108
|
+
console.warn(` ⚠️ No se pudo obtener la versión de NPM para ${name}. Se mantiene como local.`);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
|
|
116
|
+
updateSection(dependencies);
|
|
117
|
+
updateSection(devDependencies);
|
|
118
|
+
|
|
119
|
+
if (modified) {
|
|
120
|
+
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkg, null, 2) + '\n', 'utf8');
|
|
121
|
+
console.log('\n✅ package.json actualizado correctamente.');
|
|
122
|
+
const packageManager = detectPackageManager();
|
|
123
|
+
let installCmd = 'npm install';
|
|
124
|
+
if (packageManager === 'pnpm') installCmd = 'pnpm install';
|
|
125
|
+
else if (packageManager === 'yarn') installCmd = 'yarn install';
|
|
126
|
+
|
|
127
|
+
console.log(`Ejecutando ${installCmd} para sincronizar dependencias...\n`);
|
|
128
|
+
try {
|
|
129
|
+
execSync(installCmd, { stdio: 'inherit' });
|
|
130
|
+
console.log('\n🏁 Sincronización exitosa.\n');
|
|
131
|
+
} catch (e) {
|
|
132
|
+
console.error(`❌ Error al sincronizar: ${e.message}`);
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
} else {
|
|
136
|
+
console.log('🏁 No se requirieron cambios en package.json (ya configurado en este modo).');
|
|
137
|
+
}
|
|
138
|
+
process.exit(0);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// --- MODE: Interactive Update ---
|
|
142
|
+
console.log('\n🚀 Iniciando actualización interactiva de paquetes @makroz...\n');
|
|
143
|
+
|
|
144
|
+
const dependencies = pkg.dependencies || {};
|
|
145
|
+
const devDependencies = pkg.devDependencies || {};
|
|
146
|
+
const allDeps = { ...dependencies, ...devDependencies };
|
|
147
|
+
|
|
148
|
+
const makrozPackages = Object.keys(allDeps).filter(name => name.startsWith('@makroz/'));
|
|
149
|
+
|
|
150
|
+
if (makrozPackages.length === 0) {
|
|
151
|
+
console.log('✅ No se encontraron dependencias @makroz/* en este proyecto.');
|
|
152
|
+
process.exit(0);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
const packageInfos = [];
|
|
156
|
+
|
|
157
|
+
for (const name of makrozPackages) {
|
|
158
|
+
const spec = allDeps[name];
|
|
159
|
+
const isLocal = spec.startsWith('file:');
|
|
160
|
+
const installed = getInstalledVersion(name);
|
|
161
|
+
|
|
162
|
+
let latest = 'unknown';
|
|
163
|
+
if (isLocal) {
|
|
164
|
+
latest = getLatestLocalVersion(spec);
|
|
165
|
+
} else {
|
|
166
|
+
latest = getLatestRegistryVersion(name);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// Compare versions to see if update is needed
|
|
170
|
+
let needsUpdate = false;
|
|
171
|
+
if (installed !== 'unknown' && latest !== 'unknown') {
|
|
172
|
+
needsUpdate = installed !== latest;
|
|
173
|
+
} else if (installed === 'unknown' && latest !== 'unknown') {
|
|
174
|
+
needsUpdate = true;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
packageInfos.push({
|
|
178
|
+
name,
|
|
179
|
+
currentSpec: spec,
|
|
180
|
+
installedVersion: installed,
|
|
181
|
+
latestVersion: latest,
|
|
182
|
+
isLocal,
|
|
183
|
+
needsUpdate,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Print summary of packages
|
|
188
|
+
console.log('Estado de los paquetes:');
|
|
189
|
+
for (const info of packageInfos) {
|
|
190
|
+
const typeLabel = info.isLocal ? '[Local]' : '[Registry]';
|
|
191
|
+
if (info.needsUpdate) {
|
|
192
|
+
console.log(` ⚠️ ${info.name} ${typeLabel}: ${info.installedVersion} -> ${info.latestVersion} (Actualización disponible)`);
|
|
193
|
+
} else {
|
|
194
|
+
console.log(` ✅ ${info.name} ${typeLabel}: ${info.installedVersion} (Al día)`);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const updatable = packageInfos.filter(info => info.needsUpdate);
|
|
199
|
+
|
|
200
|
+
if (updatable.length === 0) {
|
|
201
|
+
console.log('\n🏁 Todos los paquetes están al día. No es necesario actualizar.\n');
|
|
202
|
+
process.exit(0);
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
const packageManager = detectPackageManager();
|
|
206
|
+
console.log(`\nGestor de paquetes detectado: ${packageManager}`);
|
|
207
|
+
|
|
208
|
+
const rl = readline.createInterface({
|
|
209
|
+
input: process.stdin,
|
|
210
|
+
output: process.stdout,
|
|
211
|
+
});
|
|
212
|
+
|
|
213
|
+
rl.question('\n¿Querés actualizar los paquetes? (Y/n): ', (answer) => {
|
|
214
|
+
rl.close();
|
|
215
|
+
const confirmed = answer.trim().toLowerCase() !== 'n';
|
|
216
|
+
|
|
217
|
+
if (!confirmed) {
|
|
218
|
+
console.log('Actualización cancelada por el usuario.');
|
|
219
|
+
process.exit(0);
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
const packageNames = updatable.map(info => info.name);
|
|
223
|
+
let command = '';
|
|
224
|
+
|
|
225
|
+
if (packageManager === 'pnpm') {
|
|
226
|
+
command = `pnpm update ${packageNames.join(' ')}`;
|
|
227
|
+
} else if (packageManager === 'yarn') {
|
|
228
|
+
command = `yarn upgrade ${packageNames.join(' ')}`;
|
|
229
|
+
} else {
|
|
230
|
+
// npm
|
|
231
|
+
const args = updatable.map(info => {
|
|
232
|
+
return info.isLocal ? info.name : `${info.name}@latest`;
|
|
233
|
+
}).join(' ');
|
|
234
|
+
command = `npm install ${args}`;
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
console.log(`\nEjecutando: ${command}...\n`);
|
|
238
|
+
|
|
239
|
+
try {
|
|
240
|
+
execSync(command, { stdio: 'inherit' });
|
|
241
|
+
console.log('\n🏁 Actualización finalizada con éxito.\n');
|
|
242
|
+
} catch (e) {
|
|
243
|
+
console.error(`\n❌ Error al ejecutar la actualización: ${e.message}\n`);
|
|
244
|
+
process.exit(1);
|
|
245
|
+
}
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
run();
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage adapters for `<MkAuthProvider>`.
|
|
3
|
+
*
|
|
4
|
+
* `AuthStorageAdapter` is the interface; `CookieStorageAdapter` is the
|
|
5
|
+
* default implementation; `LocalStorageAdapter` is an opt-in escape hatch
|
|
6
|
+
* kept for one release cycle and marked `@deprecated`.
|
|
7
|
+
*
|
|
8
|
+
* ## Why a Cookie default?
|
|
9
|
+
*
|
|
10
|
+
* Mobile (`@makroz/mobile`) already stores tokens in `expo-secure-store`
|
|
11
|
+
* (device keychain / Android Keystore). That is the secure pattern for
|
|
12
|
+
* tokens. Web never had an equivalent — the previous default wrote
|
|
13
|
+
* `access_token` and `refresh_token` into `localStorage`, where any
|
|
14
|
+
* XSS payload could exfiltrate them and where they survive tab close
|
|
15
|
+
* (extending the attack window). Switching the default to cookies
|
|
16
|
+
* aligns web with the mobile pattern; the migration story is in the
|
|
17
|
+
* package CHANGELOG.
|
|
18
|
+
*
|
|
19
|
+
* ## SSR safety
|
|
20
|
+
*
|
|
21
|
+
* Both adapters are no-ops when `document` / `window` are unavailable
|
|
22
|
+
* (server-side rendering). The provider should be hydrated client-side
|
|
23
|
+
* to pick up tokens — that has always been the case.
|
|
24
|
+
*
|
|
25
|
+
* ## Future GA work
|
|
26
|
+
*
|
|
27
|
+
* When the consumer migrates to `makroz/director-laravel` Sanctum v4
|
|
28
|
+
* cookie mode, the cookies will become `httpOnly` and the JS adapter
|
|
29
|
+
* will only manage a non-secret CSRF/read mirror. That sprint is
|
|
30
|
+
* out of scope here; this file only ships the adapter surface.
|
|
31
|
+
*/
|
|
32
|
+
import type { AuthStorageAdapter } from './types';
|
|
33
|
+
export interface CookieStorageAdapterOptions {
|
|
34
|
+
/**
|
|
35
|
+
* Emit the `Secure` flag. Set `true` in production over HTTPS.
|
|
36
|
+
* Defaults to `false` (so the adapter works in `http://localhost`
|
|
37
|
+
* during development without surprises).
|
|
38
|
+
*/
|
|
39
|
+
secure?: boolean;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Default storage adapter. Reads/writes browser cookies via
|
|
43
|
+
* `document.cookie`. Use this unless you have a specific reason to
|
|
44
|
+
* pin tokens in JavaScript-managed storage (and you almost certainly
|
|
45
|
+
* don't — that's the XSS risk this adapter exists to retire).
|
|
46
|
+
*/
|
|
47
|
+
export declare class CookieStorageAdapter implements AuthStorageAdapter {
|
|
48
|
+
private readonly secure;
|
|
49
|
+
constructor(opts?: CookieStorageAdapterOptions);
|
|
50
|
+
getItem(key: string): string | null;
|
|
51
|
+
setItem(key: string, value: string): void;
|
|
52
|
+
removeItem(key: string): void;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* @deprecated Use `CookieStorageAdapter` instead. Persists tokens in
|
|
56
|
+
* `localStorage`, where any XSS payload can read them and where they
|
|
57
|
+
* survive tab close — the opposite of what mobile's
|
|
58
|
+
* `expo-secure-store` does. Scheduled for removal in v1.4.x. A
|
|
59
|
+
* one-shot `console.warn` is emitted on the first `setItem` to make
|
|
60
|
+
* accidental usage greppable.
|
|
61
|
+
*/
|
|
62
|
+
export declare class LocalStorageAdapter implements AuthStorageAdapter {
|
|
63
|
+
getItem(key: string): string | null;
|
|
64
|
+
setItem(key: string, value: string): void;
|
|
65
|
+
removeItem(key: string): void;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Factory for the default storage used by `<MkAuthProvider>` when no
|
|
69
|
+
* `storage` prop is passed. Always returns a fresh `CookieStorageAdapter`
|
|
70
|
+
* so multiple providers in the same tree (different scopes) get their
|
|
71
|
+
* own adapter instances — cookies themselves are scoped by key name.
|
|
72
|
+
*/
|
|
73
|
+
export declare function getDefaultAuthStorage(): AuthStorageAdapter;
|
|
74
|
+
//# sourceMappingURL=AuthStorageAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthStorageAdapter.d.ts","sourceRoot":"","sources":["../../src/auth/AuthStorageAdapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAKlD,MAAM,WAAW,2BAA2B;IACxC;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,YAAW,kBAAkB;IAC3D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,IAAI,GAAE,2BAAgC;IAIlD,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAkBnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAKhC;AAID;;;;;;;GAOG;AACH,qBAAa,mBAAoB,YAAW,kBAAkB;IAC1D,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IASnC,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAUzC,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAQhC;AAaD;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Storage adapters for `<MkAuthProvider>`.
|
|
3
|
+
*
|
|
4
|
+
* `AuthStorageAdapter` is the interface; `CookieStorageAdapter` is the
|
|
5
|
+
* default implementation; `LocalStorageAdapter` is an opt-in escape hatch
|
|
6
|
+
* kept for one release cycle and marked `@deprecated`.
|
|
7
|
+
*
|
|
8
|
+
* ## Why a Cookie default?
|
|
9
|
+
*
|
|
10
|
+
* Mobile (`@makroz/mobile`) already stores tokens in `expo-secure-store`
|
|
11
|
+
* (device keychain / Android Keystore). That is the secure pattern for
|
|
12
|
+
* tokens. Web never had an equivalent — the previous default wrote
|
|
13
|
+
* `access_token` and `refresh_token` into `localStorage`, where any
|
|
14
|
+
* XSS payload could exfiltrate them and where they survive tab close
|
|
15
|
+
* (extending the attack window). Switching the default to cookies
|
|
16
|
+
* aligns web with the mobile pattern; the migration story is in the
|
|
17
|
+
* package CHANGELOG.
|
|
18
|
+
*
|
|
19
|
+
* ## SSR safety
|
|
20
|
+
*
|
|
21
|
+
* Both adapters are no-ops when `document` / `window` are unavailable
|
|
22
|
+
* (server-side rendering). The provider should be hydrated client-side
|
|
23
|
+
* to pick up tokens — that has always been the case.
|
|
24
|
+
*
|
|
25
|
+
* ## Future GA work
|
|
26
|
+
*
|
|
27
|
+
* When the consumer migrates to `makroz/director-laravel` Sanctum v4
|
|
28
|
+
* cookie mode, the cookies will become `httpOnly` and the JS adapter
|
|
29
|
+
* will only manage a non-secret CSRF/read mirror. That sprint is
|
|
30
|
+
* out of scope here; this file only ships the adapter surface.
|
|
31
|
+
*/
|
|
32
|
+
const COOKIE_DEFAULTS = 'Path=/; SameSite=Lax';
|
|
33
|
+
const COOKIE_MAX_AGE = 60 * 60 * 24 * 30; // 30 days
|
|
34
|
+
/**
|
|
35
|
+
* Default storage adapter. Reads/writes browser cookies via
|
|
36
|
+
* `document.cookie`. Use this unless you have a specific reason to
|
|
37
|
+
* pin tokens in JavaScript-managed storage (and you almost certainly
|
|
38
|
+
* don't — that's the XSS risk this adapter exists to retire).
|
|
39
|
+
*/
|
|
40
|
+
export class CookieStorageAdapter {
|
|
41
|
+
constructor(opts = {}) {
|
|
42
|
+
var _a;
|
|
43
|
+
this.secure = (_a = opts.secure) !== null && _a !== void 0 ? _a : false;
|
|
44
|
+
}
|
|
45
|
+
getItem(key) {
|
|
46
|
+
if (typeof document === 'undefined' || !document.cookie)
|
|
47
|
+
return null;
|
|
48
|
+
const cookies = document.cookie.split('; ');
|
|
49
|
+
for (const cookie of cookies) {
|
|
50
|
+
const eq = cookie.indexOf('=');
|
|
51
|
+
if (eq === -1)
|
|
52
|
+
continue;
|
|
53
|
+
const name = cookie.slice(0, eq);
|
|
54
|
+
if (name !== key)
|
|
55
|
+
continue;
|
|
56
|
+
const raw = cookie.slice(eq + 1);
|
|
57
|
+
try {
|
|
58
|
+
return decodeURIComponent(raw);
|
|
59
|
+
}
|
|
60
|
+
catch (_a) {
|
|
61
|
+
return raw;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
setItem(key, value) {
|
|
67
|
+
if (typeof document === 'undefined')
|
|
68
|
+
return;
|
|
69
|
+
const encoded = encodeURIComponent(value);
|
|
70
|
+
const flags = `${COOKIE_DEFAULTS}${this.secure ? '; Secure' : ''}`;
|
|
71
|
+
document.cookie = `${key}=${encoded}; Max-Age=${COOKIE_MAX_AGE}; ${flags}`;
|
|
72
|
+
}
|
|
73
|
+
removeItem(key) {
|
|
74
|
+
if (typeof document === 'undefined')
|
|
75
|
+
return;
|
|
76
|
+
const flags = `${COOKIE_DEFAULTS}${this.secure ? '; Secure' : ''}`;
|
|
77
|
+
document.cookie = `${key}=; Max-Age=0; ${flags}`;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
let localStorageWarned = false;
|
|
81
|
+
/**
|
|
82
|
+
* @deprecated Use `CookieStorageAdapter` instead. Persists tokens in
|
|
83
|
+
* `localStorage`, where any XSS payload can read them and where they
|
|
84
|
+
* survive tab close — the opposite of what mobile's
|
|
85
|
+
* `expo-secure-store` does. Scheduled for removal in v1.4.x. A
|
|
86
|
+
* one-shot `console.warn` is emitted on the first `setItem` to make
|
|
87
|
+
* accidental usage greppable.
|
|
88
|
+
*/
|
|
89
|
+
export class LocalStorageAdapter {
|
|
90
|
+
getItem(key) {
|
|
91
|
+
if (typeof window === 'undefined' || !window.localStorage)
|
|
92
|
+
return null;
|
|
93
|
+
try {
|
|
94
|
+
return window.localStorage.getItem(key);
|
|
95
|
+
}
|
|
96
|
+
catch (_a) {
|
|
97
|
+
return null;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
setItem(key, value) {
|
|
101
|
+
warnOnce();
|
|
102
|
+
if (typeof window === 'undefined' || !window.localStorage)
|
|
103
|
+
return;
|
|
104
|
+
try {
|
|
105
|
+
window.localStorage.setItem(key, value);
|
|
106
|
+
}
|
|
107
|
+
catch (_a) {
|
|
108
|
+
/* quota / private mode — silent */
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
removeItem(key) {
|
|
112
|
+
if (typeof window === 'undefined' || !window.localStorage)
|
|
113
|
+
return;
|
|
114
|
+
try {
|
|
115
|
+
window.localStorage.removeItem(key);
|
|
116
|
+
}
|
|
117
|
+
catch (_a) {
|
|
118
|
+
/* silent */
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function warnOnce() {
|
|
123
|
+
if (localStorageWarned)
|
|
124
|
+
return;
|
|
125
|
+
// eslint-disable-next-line no-console
|
|
126
|
+
console.warn('[mk-web] LocalStorageAdapter is deprecated. Tokens in localStorage are ' +
|
|
127
|
+
'reachable from any XSS payload. Migrate to CookieStorageAdapter ' +
|
|
128
|
+
'(browser-managed cookies) or a server-set httpOnly cookie.');
|
|
129
|
+
localStorageWarned = true;
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Factory for the default storage used by `<MkAuthProvider>` when no
|
|
133
|
+
* `storage` prop is passed. Always returns a fresh `CookieStorageAdapter`
|
|
134
|
+
* so multiple providers in the same tree (different scopes) get their
|
|
135
|
+
* own adapter instances — cookies themselves are scoped by key name.
|
|
136
|
+
*/
|
|
137
|
+
export function getDefaultAuthStorage() {
|
|
138
|
+
return new CookieStorageAdapter();
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=AuthStorageAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthStorageAdapter.js","sourceRoot":"","sources":["../../src/auth/AuthStorageAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,8 +11,17 @@ export interface MkAuthProviderProps {
|
|
|
11
11
|
/** Children wrapped by the provider. */
|
|
12
12
|
children: ReactNode;
|
|
13
13
|
/**
|
|
14
|
-
*
|
|
15
|
-
*
|
|
14
|
+
* Storage adapter for tokens and the cached user.
|
|
15
|
+
*
|
|
16
|
+
* **Required since v1.3.0.** Default if omitted is
|
|
17
|
+
* `new CookieStorageAdapter()` — aligned with the mobile
|
|
18
|
+
* `expo-secure-store` pattern, immune to the XSS exfiltration
|
|
19
|
+
* window that `localStorage` opened. Tests pass an in-memory
|
|
20
|
+
* adapter; consumers with a specific need can pass
|
|
21
|
+
* `new LocalStorageAdapter()` (deprecated) or their own impl.
|
|
22
|
+
*
|
|
23
|
+
* @see CookieStorageAdapter
|
|
24
|
+
* @see LocalStorageAdapter
|
|
16
25
|
*/
|
|
17
26
|
storage?: AuthStorageAdapter;
|
|
18
27
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MkAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,OAAO,KAAK,EAER,kBAAkB,EAKrB,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"MkAuthProvider.d.ts","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAUvC,OAAO,KAAK,EAER,kBAAkB,EAKrB,MAAM,SAAS,CAAC;AAWjB,MAAM,WAAW,mBAAmB;IAChC,uEAAuE;IACvE,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAsSD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAkB5E"}
|
|
@@ -3,13 +3,7 @@ import { jsx as _jsx } from "react/jsx-runtime";
|
|
|
3
3
|
import { useEffect, useMemo, useRef, useState, useCallback } from 'react';
|
|
4
4
|
import { QueryClient, QueryClientProvider, useQuery, useMutation, useQueryClient, } from '@tanstack/react-query';
|
|
5
5
|
import { MkAuthContext } from './MkAuthContext';
|
|
6
|
-
|
|
7
|
-
? {
|
|
8
|
-
getItem: (key) => window.localStorage.getItem(key),
|
|
9
|
-
setItem: (key, value) => window.localStorage.setItem(key, value),
|
|
10
|
-
removeItem: (key) => window.localStorage.removeItem(key),
|
|
11
|
-
}
|
|
12
|
-
: undefined;
|
|
6
|
+
import { getDefaultAuthStorage } from './AuthStorageAdapter';
|
|
13
7
|
function tokenKey(scope, kind) {
|
|
14
8
|
return `mk_auth_${scope}_${kind}_token`;
|
|
15
9
|
}
|
|
@@ -21,22 +15,24 @@ function userKey(scope) {
|
|
|
21
15
|
* Exported only as `<MkAuthProvider>`, which wraps it in
|
|
22
16
|
* `<QueryClientProvider>`.
|
|
23
17
|
*/
|
|
24
|
-
function MkAuthProviderInner({ scope, apiBaseUrl, children, storage
|
|
25
|
-
var _a
|
|
18
|
+
function MkAuthProviderInner({ scope, apiBaseUrl, children, storage: storageProp, fetcher, }) {
|
|
19
|
+
var _a;
|
|
26
20
|
const normalizedBase = apiBaseUrl.replace(/\/+$/, '');
|
|
27
21
|
const queryClient = useQueryClient();
|
|
28
22
|
const fetchImpl = fetcher !== null && fetcher !== void 0 ? fetcher : (_a = globalThis.fetch) === null || _a === void 0 ? void 0 : _a.bind(globalThis);
|
|
23
|
+
// Resolve the storage adapter once per provider instance. Re-creating
|
|
24
|
+
// it every render would invalidate every `useCallback` that lists
|
|
25
|
+
// `storage` as a dep, churning child re-renders for no reason.
|
|
26
|
+
const storage = useMemo(() => storageProp !== null && storageProp !== void 0 ? storageProp : getDefaultAuthStorage(), [storageProp]);
|
|
29
27
|
// Persisted token + user snapshots (read on first render only, to keep
|
|
30
28
|
// `useState` initializer cheap; we still write back on every change).
|
|
31
|
-
const initialAccess =
|
|
32
|
-
const initialRefresh =
|
|
33
|
-
const initialUserJson = storage
|
|
29
|
+
const initialAccess = storage.getItem(tokenKey(scope, 'access'));
|
|
30
|
+
const initialRefresh = storage.getItem(tokenKey(scope, 'refresh'));
|
|
31
|
+
const initialUserJson = storage.getItem(userKey(scope));
|
|
34
32
|
const initialUser = useRef(initialUserJson ? safeParse(initialUserJson) : null).current;
|
|
35
33
|
const [user, setUserState] = useState(initialUser);
|
|
36
34
|
const [error, setError] = useState(null);
|
|
37
35
|
const persistUser = useCallback((next) => {
|
|
38
|
-
if (!storage)
|
|
39
|
-
return;
|
|
40
36
|
if (next) {
|
|
41
37
|
storage.setItem(userKey(scope), JSON.stringify(next));
|
|
42
38
|
}
|
|
@@ -45,8 +41,6 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
45
41
|
}
|
|
46
42
|
}, [scope, storage]);
|
|
47
43
|
const persistTokens = useCallback((access, refresh) => {
|
|
48
|
-
if (!storage)
|
|
49
|
-
return;
|
|
50
44
|
if (access) {
|
|
51
45
|
storage.setItem(tokenKey(scope, 'access'), access);
|
|
52
46
|
}
|
|
@@ -74,8 +68,7 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
74
68
|
const meQuery = useQuery({
|
|
75
69
|
queryKey: ['mk-auth', scope, 'me'],
|
|
76
70
|
queryFn: async ({ signal }) => {
|
|
77
|
-
|
|
78
|
-
const access = (_a = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'access'))) !== null && _a !== void 0 ? _a : null;
|
|
71
|
+
const access = storage.getItem(tokenKey(scope, 'access'));
|
|
79
72
|
if (!access) {
|
|
80
73
|
throw new Error('No access token available');
|
|
81
74
|
}
|
|
@@ -113,8 +106,7 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
113
106
|
// ---- refresh mutation (also used on mount when /me 401s) ---------------
|
|
114
107
|
const refreshMutation = useMutation({
|
|
115
108
|
mutationFn: async () => {
|
|
116
|
-
|
|
117
|
-
const refresh = (_a = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'refresh'))) !== null && _a !== void 0 ? _a : null;
|
|
109
|
+
const refresh = storage.getItem(tokenKey(scope, 'refresh'));
|
|
118
110
|
if (!refresh) {
|
|
119
111
|
throw new Error('No refresh token available');
|
|
120
112
|
}
|
|
@@ -157,7 +149,7 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
157
149
|
// ---- logout mutation ---------------------------------------------------
|
|
158
150
|
const logoutMutation = useMutation({
|
|
159
151
|
mutationFn: async () => {
|
|
160
|
-
const access = storage
|
|
152
|
+
const access = storage.getItem(tokenKey(scope, 'access'));
|
|
161
153
|
if (!access)
|
|
162
154
|
return;
|
|
163
155
|
const res = await fetchImpl(`${normalizedBase}/api/${scope}/auth/logout`, {
|
|
@@ -187,9 +179,8 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
187
179
|
// meQuery executes automatically on mount if access token exists (enabled: true).
|
|
188
180
|
const tokenRefreshed = useRef(false);
|
|
189
181
|
useEffect(() => {
|
|
190
|
-
var _a;
|
|
191
182
|
if (meQuery.isError && !tokenRefreshed.current) {
|
|
192
|
-
const refresh =
|
|
183
|
+
const refresh = storage.getItem(tokenKey(scope, 'refresh'));
|
|
193
184
|
if (refresh) {
|
|
194
185
|
tokenRefreshed.current = true;
|
|
195
186
|
refreshMutation
|
|
@@ -213,8 +204,7 @@ function MkAuthProviderInner({ scope, apiBaseUrl, children, storage = DEFAULT_ST
|
|
|
213
204
|
}, [meQuery.isError, scope, storage, refreshMutation, persistTokens, setUser, clearAll, meQuery]);
|
|
214
205
|
// Handle initial state if no token exists
|
|
215
206
|
useEffect(() => {
|
|
216
|
-
|
|
217
|
-
const access = (_a = storage === null || storage === void 0 ? void 0 : storage.getItem(tokenKey(scope, 'access'))) !== null && _a !== void 0 ? _a : null;
|
|
207
|
+
const access = storage.getItem(tokenKey(scope, 'access'));
|
|
218
208
|
if (!access) {
|
|
219
209
|
setUser(null);
|
|
220
210
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MkAuthProvider.js","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MkAuthProvider.js","sourceRoot":"","sources":["../../src/auth/MkAuthProvider.tsx"],"names":[],"mappings":"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"}
|