@djangocfg/api 2.1.582 → 2.1.584
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 +18 -0
- package/dist/OAuthTokenResponse-WEDM6IP5.mjs +19 -0
- package/dist/OAuthTokenResponse-WEDM6IP5.mjs.map +1 -0
- package/dist/OTPVerifyResponse-P5LDNM7H.mjs +20 -0
- package/dist/OTPVerifyResponse-P5LDNM7H.mjs.map +1 -0
- package/dist/PasswordLoginResponse-33B576NG.mjs +20 -0
- package/dist/PasswordLoginResponse-33B576NG.mjs.map +1 -0
- package/dist/auth.cjs +279 -103
- package/dist/auth.cjs.map +1 -1
- package/dist/auth.d.cts +14 -41
- package/dist/auth.d.ts +14 -41
- package/dist/auth.mjs +279 -101
- package/dist/auth.mjs.map +1 -1
- package/dist/clients.cjs +242 -54
- package/dist/clients.cjs.map +1 -1
- package/dist/clients.d.cts +13 -41
- package/dist/clients.d.ts +13 -41
- package/dist/clients.mjs +242 -54
- package/dist/clients.mjs.map +1 -1
- package/dist/hooks.cjs +242 -54
- package/dist/hooks.cjs.map +1 -1
- package/dist/hooks.mjs +242 -54
- package/dist/hooks.mjs.map +1 -1
- package/dist/index.cjs +247 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +90 -63
- package/dist/index.d.ts +90 -63
- package/dist/index.mjs +247 -54
- package/dist/index.mjs.map +1 -1
- package/dist/storage.cjs +268 -0
- package/dist/storage.cjs.map +1 -0
- package/dist/storage.d.cts +84 -0
- package/dist/storage.d.ts +84 -0
- package/dist/storage.mjs +247 -0
- package/dist/storage.mjs.map +1 -0
- package/package.json +8 -2
- package/src/__tests__/noStorageLiterals.test.ts +27 -0
- package/src/__tests__/storage.test.ts +134 -0
- package/src/__tests__/storageSsr.test.ts +14 -0
- package/src/_api/generated/_cfg_accounts/openapi.json +1 -28
- package/src/_api/generated/_cfg_accounts/schemas/OAuthCallbackRequestRequest.ts +0 -1
- package/src/_api/generated/_cfg_accounts/schemas/OAuthTokenResponse.ts +0 -1
- package/src/_api/generated/_cfg_accounts/schemas/OTPVerifyRequest.ts +0 -1
- package/src/_api/generated/_cfg_accounts/schemas/OTPVerifyResponse.ts +0 -1
- package/src/_api/generated/_cfg_accounts/schemas/PasswordLoginRequest.ts +0 -1
- package/src/_api/generated/_cfg_accounts/schemas/PasswordLoginResponse.ts +0 -1
- package/src/_api/generated/_cfg_totp/openapi.json +0 -5
- package/src/_api/generated/_cfg_totp/schemas/VerifyResponse.ts +0 -1
- package/src/_api/generated/helpers/auth.ts +28 -65
- package/src/_api/generated/helpers/index.ts +12 -0
- package/src/_api/generated/helpers/keys.ts +327 -0
- package/src/_api/generated/openapi.json +1 -33
- package/src/_api/generated/types.gen.ts +4 -59
- package/src/auth/__tests__/authRedirect.test.ts +1 -1
- package/src/auth/__tests__/passwordLogin.test.tsx +1 -3
- package/src/auth/__tests__/profileCache.test.ts +1 -1
- package/src/auth/context/AccountsContext.tsx +6 -8
- package/src/auth/context/AuthContext.tsx +3 -5
- package/src/auth/context/types.ts +1 -1
- package/src/auth/hooks/useAuthForm.ts +3 -5
- package/src/auth/hooks/useAuthFormState.ts +0 -4
- package/src/auth/hooks/useAuthRedirect.ts +3 -2
- package/src/auth/hooks/useGithubAuth.ts +14 -16
- package/src/auth/hooks/useLocalStorage.ts +7 -7
- package/src/auth/hooks/useProfileCache.ts +2 -1
- package/src/auth/hooks/useSessionStorage.ts +7 -7
- package/src/auth/hooks/useTwoFactorVerify.ts +2 -2
- package/src/auth/types/form.ts +0 -5
- package/src/storage.ts +21 -0
package/README.md
CHANGED
|
@@ -102,6 +102,24 @@ valid, so the auth form cannot fix it, and redirecting would loop on the saved
|
|
|
102
102
|
URL. Render a distinct "not authorised" state instead. `resolveGuardIsLoading`
|
|
103
103
|
returns `false` once forbidden, so the preloader never spins on it.
|
|
104
104
|
|
|
105
|
+
## Storage keys
|
|
106
|
+
|
|
107
|
+
Every browser-storage key is `cfg.<area>.<name>` (framework) or
|
|
108
|
+
`<owner>.<area>.<name>` (app). Use the registry, never a literal or raw `localStorage`:
|
|
109
|
+
|
|
110
|
+
```ts
|
|
111
|
+
import { CFG_KEYS, cfgStorage, createStorage } from '@djangocfg/api/storage';
|
|
112
|
+
|
|
113
|
+
cfgStorage.read(CFG_KEYS.email.key);
|
|
114
|
+
cfgStorage.clearAll(); // sign-out: removes personal keys
|
|
115
|
+
|
|
116
|
+
const storage = createStorage('kino');
|
|
117
|
+
storage.writeJSON(storage.key('player', 'volume'), 0.4);
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Old key names are not migrated. Full rules, the key list and cross-tab behavior:
|
|
121
|
+
[`@docs/STORAGE_KEYS.md`](./@docs/STORAGE_KEYS.md).
|
|
122
|
+
|
|
105
123
|
## Token storage & DPoP
|
|
106
124
|
|
|
107
125
|
The token lives in the shared `auth` store (localStorage by default, switchable
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import "./chunk-53YKWR6F.mjs";
|
|
3
|
+
|
|
4
|
+
// src/_api/generated/_cfg_accounts/schemas/OAuthTokenResponse.ts
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
var OAuthTokenResponseSchema = z.object({
|
|
7
|
+
requires_2fa: z.boolean().default(false).optional(),
|
|
8
|
+
session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),
|
|
9
|
+
access: z.string().nullable().optional(),
|
|
10
|
+
refresh: z.string().nullable().optional(),
|
|
11
|
+
user: z.object({}).passthrough().nullable().optional(),
|
|
12
|
+
is_new_user: z.boolean().default(false).optional(),
|
|
13
|
+
is_new_connection: z.boolean().default(false).optional(),
|
|
14
|
+
should_prompt_2fa: z.boolean().optional()
|
|
15
|
+
});
|
|
16
|
+
export {
|
|
17
|
+
OAuthTokenResponseSchema
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=OAuthTokenResponse-WEDM6IP5.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/_api/generated/_cfg_accounts/schemas/OAuthTokenResponse.ts"],"sourcesContent":["// AUTO-GENERATED by cmdop_server / devtools.generator.ts_extras\n// Source: OpenAPI 3.1 components.schemas\n// DO NOT EDIT — re-run `make gen-clients`.\n\nimport { z } from \"zod\";\n\nexport const OAuthTokenResponseSchema = z.object({\n requires_2fa: z.boolean().default(false).optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n access: z.string().nullable().optional(),\n refresh: z.string().nullable().optional(),\n user: z.object({}).passthrough().nullable().optional(),\n is_new_user: z.boolean().default(false).optional(),\n is_new_connection: z.boolean().default(false).optional(),\n should_prompt_2fa: z.boolean().optional(),\n});\n\nexport type OAuthTokenResponse = z.infer<typeof OAuthTokenResponseSchema>;\n"],"mappings":";;;;AAIA,SAAS,SAAS;AAEX,IAAM,2BAA2B,EAAE,OAAO;AAAA,EAC/C,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;AAAA,EAClD,YAAY,EAAE,OAAO,EAAE,MAAM,iEAAiE,EAAE,SAAS,EAAE,SAAS;AAAA,EACpH,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,SAAS;AAAA,EACrD,aAAa,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;AAAA,EACjD,mBAAmB,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;AAAA,EACvD,mBAAmB,EAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
UserSchema
|
|
4
|
+
} from "./chunk-B22YGMM3.mjs";
|
|
5
|
+
import "./chunk-53YKWR6F.mjs";
|
|
6
|
+
|
|
7
|
+
// src/_api/generated/_cfg_accounts/schemas/OTPVerifyResponse.ts
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
var OTPVerifyResponseSchema = z.object({
|
|
10
|
+
requires_2fa: z.boolean().default(false).optional(),
|
|
11
|
+
session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),
|
|
12
|
+
refresh: z.string().nullable().optional(),
|
|
13
|
+
access: z.string().nullable().optional(),
|
|
14
|
+
user: UserSchema.nullable().optional(),
|
|
15
|
+
should_prompt_2fa: z.boolean().optional()
|
|
16
|
+
});
|
|
17
|
+
export {
|
|
18
|
+
OTPVerifyResponseSchema
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=OTPVerifyResponse-P5LDNM7H.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/_api/generated/_cfg_accounts/schemas/OTPVerifyResponse.ts"],"sourcesContent":["// AUTO-GENERATED by cmdop_server / devtools.generator.ts_extras\n// Source: OpenAPI 3.1 components.schemas\n// DO NOT EDIT — re-run `make gen-clients`.\n\nimport { z } from \"zod\";\nimport { UserSchema } from \"./User\";\n\nexport const OTPVerifyResponseSchema = z.object({\n requires_2fa: z.boolean().default(false).optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n refresh: z.string().nullable().optional(),\n access: z.string().nullable().optional(),\n user: UserSchema.nullable().optional(),\n should_prompt_2fa: z.boolean().optional(),\n});\n\nexport type OTPVerifyResponse = z.infer<typeof OTPVerifyResponseSchema>;\n"],"mappings":";;;;;;;AAIA,SAAS,SAAS;AAGX,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;AAAA,EAClD,YAAY,EAAE,OAAO,EAAE,MAAM,iEAAiE,EAAE,SAAS,EAAE,SAAS;AAAA,EACpH,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,MAAM,WAAW,SAAS,EAAE,SAAS;AAAA,EACrC,mBAAmB,EAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;","names":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
UserSchema
|
|
4
|
+
} from "./chunk-B22YGMM3.mjs";
|
|
5
|
+
import "./chunk-53YKWR6F.mjs";
|
|
6
|
+
|
|
7
|
+
// src/_api/generated/_cfg_accounts/schemas/PasswordLoginResponse.ts
|
|
8
|
+
import { z } from "zod";
|
|
9
|
+
var PasswordLoginResponseSchema = z.object({
|
|
10
|
+
requires_2fa: z.boolean().default(false).optional(),
|
|
11
|
+
session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),
|
|
12
|
+
refresh: z.string().nullable().optional(),
|
|
13
|
+
access: z.string().nullable().optional(),
|
|
14
|
+
user: UserSchema.nullable().optional(),
|
|
15
|
+
should_prompt_2fa: z.boolean().optional()
|
|
16
|
+
});
|
|
17
|
+
export {
|
|
18
|
+
PasswordLoginResponseSchema
|
|
19
|
+
};
|
|
20
|
+
//# sourceMappingURL=PasswordLoginResponse-33B576NG.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/_api/generated/_cfg_accounts/schemas/PasswordLoginResponse.ts"],"sourcesContent":["// AUTO-GENERATED by cmdop_server / devtools.generator.ts_extras\n// Source: OpenAPI 3.1 components.schemas\n// DO NOT EDIT — re-run `make gen-clients`.\n\nimport { z } from \"zod\";\nimport { UserSchema } from \"./User\";\n\nexport const PasswordLoginResponseSchema = z.object({\n requires_2fa: z.boolean().default(false).optional(),\n session_id: z.string().regex(/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i).nullable().optional(),\n refresh: z.string().nullable().optional(),\n access: z.string().nullable().optional(),\n user: UserSchema.nullable().optional(),\n should_prompt_2fa: z.boolean().optional(),\n});\n\nexport type PasswordLoginResponse = z.infer<typeof PasswordLoginResponseSchema>;\n"],"mappings":";;;;;;;AAIA,SAAS,SAAS;AAGX,IAAM,8BAA8B,EAAE,OAAO;AAAA,EAClD,cAAc,EAAE,QAAQ,EAAE,QAAQ,KAAK,EAAE,SAAS;AAAA,EAClD,YAAY,EAAE,OAAO,EAAE,MAAM,iEAAiE,EAAE,SAAS,EAAE,SAAS;AAAA,EACpH,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACxC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS;AAAA,EACvC,MAAM,WAAW,SAAS,EAAE,SAAS;AAAA,EACrC,mBAAmB,EAAE,QAAQ,EAAE,SAAS;AAC1C,CAAC;","names":[]}
|