@keycloakify/svelte 0.1.8 → 0.1.10

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.
@@ -31,8 +31,8 @@ var assert = __webpack_require__(966);
31
31
  var id = __webpack_require__(94);
32
32
  // EXTERNAL MODULE: ./node_modules/tsafe/esm/is.mjs
33
33
  var is = __webpack_require__(289);
34
- // EXTERNAL MODULE: ./node_modules/zod/lib/index.mjs
35
- var lib = __webpack_require__(383);
34
+ // EXTERNAL MODULE: ./node_modules/zod/v4/classic/schemas.js + 12 modules
35
+ var schemas = __webpack_require__(788);
36
36
  ;// CONCATENATED MODULE: ./dist/keycloakify-svelte/bin/initialize-account-theme/updateAccountThemeImplementationInConfig.ts
37
37
 
38
38
 
@@ -65,8 +65,8 @@ function updateAccountThemeImplementationInConfig(params) {
65
65
  {
66
66
  const parsedPackageJson = (() => {
67
67
  const zParsedPackageJson = (() => {
68
- const zTargetType = lib.z.object({
69
- keycloakify: lib.z.record(lib.z.unknown()),
68
+ const zTargetType = schemas/* object */.Ik({
69
+ keycloakify: schemas/* record */.g1(schemas/* unknown */.L5()),
70
70
  });
71
71
  (0,assert/* assert */.v)();
72
72
  return (0,id.id)(zTargetType);
@@ -655,45 +655,66 @@ async function command(params) {
655
655
  process.exit(0);
656
656
  }
657
657
  console.log(`→ ${pageIdOrComponent}`);
658
- const componentBasename = (() => {
658
+ const componentBasenames = (() => {
659
659
  if (pageIdOrComponent === templateValue) {
660
- return 'Template.svelte';
660
+ return ['Template.svelte'];
661
661
  }
662
662
  if (pageIdOrComponent === userProfileFormFieldsValue) {
663
- return 'UserProfileFormFields.svelte';
663
+ return [
664
+ 'UserProfileFormFields.svelte',
665
+ 'InputFieldByType.svelte',
666
+ 'LogoutOtherSessions.svelte',
667
+ 'PasswordWrapper.svelte',
668
+ 'AddRemoveButtonsMultiValuedAttribute.svelte',
669
+ 'SelectTag.svelte',
670
+ 'FieldErrors.svelte',
671
+ 'InputTag.svelte',
672
+ 'TermsAcceptance.svelte',
673
+ 'GroupLabel.svelte',
674
+ 'InputTagSelects.svelte',
675
+ 'TextareaTag.svelte',
676
+ ];
664
677
  }
665
- return (0,tsafe_capitalize__WEBPACK_IMPORTED_MODULE_6__/* .capitalize */ .Z)((0,_tools_kebabCaseToSnakeCase__WEBPACK_IMPORTED_MODULE_7__/* .kebabCaseToCamelCase */ .b)(pageIdOrComponent)).replace(/ftl$/, 'svelte');
678
+ return [(0,tsafe_capitalize__WEBPACK_IMPORTED_MODULE_6__/* .capitalize */ .Z)((0,_tools_kebabCaseToSnakeCase__WEBPACK_IMPORTED_MODULE_7__/* .kebabCaseToCamelCase */ .b)(pageIdOrComponent)).replace(/ftl$/, 'svelte')];
666
679
  })();
667
680
  const pagesOrDot = (() => {
668
- if (pageIdOrComponent === templateValue || pageIdOrComponent === userProfileFormFieldsValue) {
681
+ if (pageIdOrComponent === templateValue) {
669
682
  return '.';
670
683
  }
684
+ else if (pageIdOrComponent === userProfileFormFieldsValue) {
685
+ return 'components';
686
+ }
671
687
  return 'pages';
672
688
  })();
673
- const targetFilePath = (0,path__WEBPACK_IMPORTED_MODULE_3__.join)(buildContext.themeSrcDirPath, themeType, pagesOrDot, componentBasename);
674
- if (fs__WEBPACK_IMPORTED_MODULE_2__.existsSync(targetFilePath)) {
675
- console.log(`${pageIdOrComponent} is already ejected, ${(0,path__WEBPACK_IMPORTED_MODULE_3__.relative)(process.cwd(), targetFilePath)} already exists`);
676
- process.exit(-1);
677
- }
678
- let componentCode = fs__WEBPACK_IMPORTED_MODULE_2__.readFileSync((0,path__WEBPACK_IMPORTED_MODULE_3__.join)((0,_tools_getThisCodebaseRootDirPath__WEBPACK_IMPORTED_MODULE_8__/* .getThisCodebaseRootDirPath */ .J)(), 'src', themeType, pagesOrDot, componentBasename))
679
- .toString('utf8');
680
- run_prettier: {
681
- if (!(await (0,_tools_runPrettier__WEBPACK_IMPORTED_MODULE_9__/* .getIsPrettierAvailable */ .L)())) {
682
- break run_prettier;
689
+ for (const componentBasename of componentBasenames) {
690
+ const targetFilePath = (0,path__WEBPACK_IMPORTED_MODULE_3__.join)(buildContext.themeSrcDirPath, themeType, pagesOrDot, componentBasename);
691
+ if (fs__WEBPACK_IMPORTED_MODULE_2__.existsSync(targetFilePath)) {
692
+ console.log(`${pageIdOrComponent} is already ejected, ${(0,path__WEBPACK_IMPORTED_MODULE_3__.relative)(process.cwd(), targetFilePath)} already exists`);
693
+ process.exit(-1);
683
694
  }
684
- componentCode = await (0,_tools_runPrettier__WEBPACK_IMPORTED_MODULE_9__/* .runPrettier */ .JS)({
685
- filePath: targetFilePath,
686
- sourceCode: componentCode,
687
- });
688
- }
689
- {
690
- const targetDirPath = (0,path__WEBPACK_IMPORTED_MODULE_3__.dirname)(targetFilePath);
691
- if (!fs__WEBPACK_IMPORTED_MODULE_2__.existsSync(targetDirPath)) {
692
- fs__WEBPACK_IMPORTED_MODULE_2__.mkdirSync(targetDirPath, { recursive: true });
695
+ let componentCode = fs__WEBPACK_IMPORTED_MODULE_2__.readFileSync((0,path__WEBPACK_IMPORTED_MODULE_3__.join)((0,_tools_getThisCodebaseRootDirPath__WEBPACK_IMPORTED_MODULE_8__/* .getThisCodebaseRootDirPath */ .J)(), 'src', themeType, pagesOrDot, componentBasename))
696
+ .toString('utf8');
697
+ if (userProfileFormFieldsValue) {
698
+ componentCode = componentCode.replace(new RegExp(`from '@keycloakify/svelte/login/components/(${componentBasenames.join('|')})`, 'g'), `from './$1`);
699
+ }
700
+ run_prettier: {
701
+ if (!(await (0,_tools_runPrettier__WEBPACK_IMPORTED_MODULE_9__/* .getIsPrettierAvailable */ .L)())) {
702
+ break run_prettier;
703
+ }
704
+ componentCode = await (0,_tools_runPrettier__WEBPACK_IMPORTED_MODULE_9__/* .runPrettier */ .JS)({
705
+ filePath: targetFilePath,
706
+ sourceCode: componentCode,
707
+ });
708
+ }
709
+ {
710
+ const targetDirPath = (0,path__WEBPACK_IMPORTED_MODULE_3__.dirname)(targetFilePath);
711
+ if (!fs__WEBPACK_IMPORTED_MODULE_2__.existsSync(targetDirPath)) {
712
+ fs__WEBPACK_IMPORTED_MODULE_2__.mkdirSync(targetDirPath, { recursive: true });
713
+ }
693
714
  }
715
+ fs__WEBPACK_IMPORTED_MODULE_2__.writeFileSync(targetFilePath, Buffer.from(componentCode, 'utf8'));
716
+ console.log(`${chalk__WEBPACK_IMPORTED_MODULE_0___default().green('✓')} ${chalk__WEBPACK_IMPORTED_MODULE_0___default().bold((0,path__WEBPACK_IMPORTED_MODULE_3__.join)('.', (0,path__WEBPACK_IMPORTED_MODULE_3__.relative)(process.cwd(), targetFilePath)))} copy pasted from the Keycloakify source code into your project`);
694
717
  }
695
- fs__WEBPACK_IMPORTED_MODULE_2__.writeFileSync(targetFilePath, Buffer.from(componentCode, 'utf8'));
696
- console.log(`${chalk__WEBPACK_IMPORTED_MODULE_0___default().green('✓')} ${chalk__WEBPACK_IMPORTED_MODULE_0___default().bold((0,path__WEBPACK_IMPORTED_MODULE_3__.join)('.', (0,path__WEBPACK_IMPORTED_MODULE_3__.relative)(process.cwd(), targetFilePath)))} copy pasted from the Keycloakify source code into your project`);
697
718
  edit_KcPage: {
698
719
  if (pageIdOrComponent !== templateValue && pageIdOrComponent !== userProfileFormFieldsValue) {
699
720
  break edit_KcPage;
@@ -705,7 +726,7 @@ async function command(params) {
705
726
  case templateValue:
706
727
  return kcAppSvelteCode.replace(`@keycloakify/svelte/${themeType}/Template`, './Template');
707
728
  case userProfileFormFieldsValue:
708
- return kcAppSvelteCode.replace(`@keycloakify/svelte/login/UserProfileFormFields`, './UserProfileFormFields');
729
+ return kcAppSvelteCode.replace(`@keycloakify/svelte/login/components/UserProfileFormFields`, './components/UserProfileFormFields');
709
730
  }
710
731
  (0,tsafe_assert__WEBPACK_IMPORTED_MODULE_4__/* .assert */ .v)(false);
711
732
  })();
@@ -732,7 +753,7 @@ async function command(params) {
732
753
  ` switch (kcContext.pageId) {`,
733
754
  `+`,
734
755
  ` case '${pageIdOrComponent}':`,
735
- ` return import('./pages/${componentBasename}"');`,
756
+ ` return import('./pages/${componentBasenames[0]}');`,
736
757
  `+`,
737
758
  ` //...`,
738
759
  ` default:`,
@@ -2452,7 +2452,7 @@ const { buildContext, commandName } = readParams({ apiVersion: 'v1' });
2452
2452
  return;
2453
2453
  case 'initialize-account-theme':
2454
2454
  {
2455
- const { command } = await Promise.all(/* import() */[__nccwpck_require__.e(279), __nccwpck_require__.e(709)]).then(__nccwpck_require__.bind(__nccwpck_require__, 709));
2455
+ const { command } = await Promise.all(/* import() */[__nccwpck_require__.e(292), __nccwpck_require__.e(709)]).then(__nccwpck_require__.bind(__nccwpck_require__, 709));
2456
2456
  command({ buildContext });
2457
2457
  }
2458
2458
  return;
@@ -32,7 +32,7 @@
32
32
  {#snippet headerNode()}
33
33
  {@render msg('termsTitle')()}
34
34
  {/snippet}
35
- <div id="kc-terms-text">{msg('termsText')}</div>
35
+ <div id="kc-terms-text">{@render msg('termsText')()}</div>
36
36
  <form
37
37
  class="form-actions"
38
38
  action={url.loginAction}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@keycloakify/svelte",
3
- "version": "0.1.8",
3
+ "version": "0.1.10",
4
4
  "description": "Svelte Components for Keycloakify",
5
5
  "keywords": [
6
6
  "keycloak",
@@ -437,33 +437,33 @@
437
437
  },
438
438
  "devDependencies": {
439
439
  "@sveltejs/adapter-auto": "^6.0.1",
440
- "@sveltejs/kit": "^2.21.0",
441
- "@sveltejs/package": "^2.3.11",
442
- "@sveltejs/vite-plugin-svelte": "^5.0.3",
440
+ "@sveltejs/kit": "^2.22.5",
441
+ "@sveltejs/package": "^2.3.12",
442
+ "@sveltejs/vite-plugin-svelte": "^6.0.0",
443
443
  "@types/eslint": "^9.6.1",
444
444
  "@types/node": "^22.15.18",
445
445
  "@vercel/ncc": "^0.38.3",
446
446
  "conventional-changelog-cli": "^5.0.0",
447
447
  "cz-conventional-changelog": "^3.3.0",
448
448
  "cli-select": "^1.1.2",
449
- "eslint": "9.26.0",
449
+ "eslint": "^9.31.0",
450
450
  "eslint-config-prettier": "^10.1.5",
451
- "eslint-plugin-prettier": "^5.4.0",
452
- "eslint-plugin-svelte": "^3.7.0",
451
+ "eslint-plugin-prettier": "^5.5.1",
452
+ "eslint-plugin-svelte": "^3.10.1",
453
453
  "eslint-plugin-unused-imports": "^4.1.4",
454
- "globals": "^16.1.0",
455
- "keycloakify": "^11.8.27",
454
+ "globals": "^16.3.0",
455
+ "keycloakify": "^11.8.50",
456
456
  "npm-check-updates": "^18.0.1",
457
- "prettier": "^3.5.3",
457
+ "prettier": "^3.6.2",
458
458
  "prettier-plugin-svelte": "^3.4.0",
459
459
  "publint": "0.2.12",
460
- "svelte": "^5.30.1",
461
- "svelte-check": "^4.2.1",
462
- "tsx": "^4.19.4",
460
+ "svelte": "^5.35.6",
461
+ "svelte-check": "^4.2.2",
462
+ "tsx": "^4.20.3",
463
463
  "typescript": "~5.8.3",
464
- "typescript-eslint": "^8.32.1",
465
- "vite": "^6.3.5",
466
- "zod": "^3.24.4"
464
+ "typescript-eslint": "^8.36.0",
465
+ "vite": "^7.0.4",
466
+ "zod": "^4.0.5"
467
467
  },
468
468
  "bin": {
469
469
  "_keycloakify-custom-handler": "keycloakify-svelte/bin/index.js"
@@ -95,66 +95,89 @@ export async function command(params: { buildContext: BuildContext }) {
95
95
 
96
96
  console.log(`→ ${pageIdOrComponent}`);
97
97
 
98
- const componentBasename = (() => {
98
+ const componentBasenames = (() => {
99
99
  if (pageIdOrComponent === templateValue) {
100
- return 'Template.svelte';
100
+ return ['Template.svelte'];
101
101
  }
102
102
 
103
103
  if (pageIdOrComponent === userProfileFormFieldsValue) {
104
- return 'UserProfileFormFields.svelte';
104
+ return [
105
+ 'UserProfileFormFields.svelte',
106
+ 'InputFieldByType.svelte',
107
+ 'LogoutOtherSessions.svelte',
108
+ 'PasswordWrapper.svelte',
109
+ 'AddRemoveButtonsMultiValuedAttribute.svelte',
110
+ 'SelectTag.svelte',
111
+ 'FieldErrors.svelte',
112
+ 'InputTag.svelte',
113
+ 'TermsAcceptance.svelte',
114
+ 'GroupLabel.svelte',
115
+ 'InputTagSelects.svelte',
116
+ 'TextareaTag.svelte',
117
+ ];
105
118
  }
106
119
 
107
- return capitalize(kebabCaseToCamelCase(pageIdOrComponent)).replace(/ftl$/, 'svelte');
120
+ return [capitalize(kebabCaseToCamelCase(pageIdOrComponent)).replace(/ftl$/, 'svelte')];
108
121
  })();
109
122
 
110
123
  const pagesOrDot = (() => {
111
- if (pageIdOrComponent === templateValue || pageIdOrComponent === userProfileFormFieldsValue) {
124
+ if (pageIdOrComponent === templateValue) {
112
125
  return '.';
126
+ } else if (pageIdOrComponent === userProfileFormFieldsValue) {
127
+ return 'components';
113
128
  }
114
129
 
115
130
  return 'pages';
116
131
  })();
117
132
 
118
- const targetFilePath = pathJoin(buildContext.themeSrcDirPath, themeType, pagesOrDot, componentBasename);
133
+ for (const componentBasename of componentBasenames) {
134
+ const targetFilePath = pathJoin(buildContext.themeSrcDirPath, themeType, pagesOrDot, componentBasename);
119
135
 
120
- if (fs.existsSync(targetFilePath)) {
121
- console.log(
122
- `${pageIdOrComponent} is already ejected, ${pathRelative(process.cwd(), targetFilePath)} already exists`,
123
- );
124
-
125
- process.exit(-1);
126
- }
136
+ if (fs.existsSync(targetFilePath)) {
137
+ console.log(
138
+ `${pageIdOrComponent} is already ejected, ${pathRelative(process.cwd(), targetFilePath)} already exists`,
139
+ );
127
140
 
128
- let componentCode = fs
129
- .readFileSync(pathJoin(getThisCodebaseRootDirPath(), 'src', themeType, pagesOrDot, componentBasename))
130
- .toString('utf8');
141
+ process.exit(-1);
142
+ }
131
143
 
132
- run_prettier: {
133
- if (!(await getIsPrettierAvailable())) {
134
- break run_prettier;
144
+ let componentCode = fs
145
+ .readFileSync(pathJoin(getThisCodebaseRootDirPath(), 'src', themeType, pagesOrDot, componentBasename))
146
+ .toString('utf8');
147
+ if (userProfileFormFieldsValue) {
148
+ componentCode = componentCode.replace(
149
+ new RegExp(`from '@keycloakify/svelte/login/components/(${componentBasenames.join('|')})`, 'g'),
150
+ `from './$1`,
151
+ );
135
152
  }
136
153
 
137
- componentCode = await runPrettier({
138
- filePath: targetFilePath,
139
- sourceCode: componentCode,
140
- });
141
- }
154
+ run_prettier: {
155
+ if (!(await getIsPrettierAvailable())) {
156
+ break run_prettier;
157
+ }
158
+
159
+ componentCode = await runPrettier({
160
+ filePath: targetFilePath,
161
+ sourceCode: componentCode,
162
+ });
163
+ }
142
164
 
143
- {
144
- const targetDirPath = pathDirname(targetFilePath);
165
+ {
166
+ const targetDirPath = pathDirname(targetFilePath);
145
167
 
146
- if (!fs.existsSync(targetDirPath)) {
147
- fs.mkdirSync(targetDirPath, { recursive: true });
168
+ if (!fs.existsSync(targetDirPath)) {
169
+ fs.mkdirSync(targetDirPath, { recursive: true });
170
+ }
148
171
  }
149
- }
150
172
 
151
- fs.writeFileSync(targetFilePath, Buffer.from(componentCode, 'utf8'));
173
+ fs.writeFileSync(targetFilePath, Buffer.from(componentCode, 'utf8'));
152
174
 
153
- console.log(
154
- `${chalk.green('✓')} ${chalk.bold(
155
- pathJoin('.', pathRelative(process.cwd(), targetFilePath)),
156
- )} copy pasted from the Keycloakify source code into your project`,
157
- );
175
+ console.log(
176
+ `${chalk.green('✓')} ${chalk.bold(
177
+ pathJoin('.', pathRelative(process.cwd(), targetFilePath)),
178
+ )} copy pasted from the Keycloakify source code into your project`,
179
+ );
180
+ }
158
181
 
159
182
  edit_KcPage: {
160
183
  if (pageIdOrComponent !== templateValue && pageIdOrComponent !== userProfileFormFieldsValue) {
@@ -170,7 +193,10 @@ export async function command(params: { buildContext: BuildContext }) {
170
193
  case templateValue:
171
194
  return kcAppSvelteCode.replace(`@keycloakify/svelte/${themeType}/Template`, './Template');
172
195
  case userProfileFormFieldsValue:
173
- return kcAppSvelteCode.replace(`@keycloakify/svelte/login/UserProfileFormFields`, './UserProfileFormFields');
196
+ return kcAppSvelteCode.replace(
197
+ `@keycloakify/svelte/login/components/UserProfileFormFields`,
198
+ './components/UserProfileFormFields',
199
+ );
174
200
  }
175
201
  assert<Equals<typeof pageIdOrComponent, never>>(false);
176
202
  })();
@@ -207,7 +233,7 @@ export async function command(params: { buildContext: BuildContext }) {
207
233
  ` switch (kcContext.pageId) {`,
208
234
  `+`,
209
235
  ` case '${pageIdOrComponent}':`,
210
- ` return import('./pages/${componentBasename}"');`,
236
+ ` return import('./pages/${componentBasenames[0]}');`,
211
237
  `+`,
212
238
  ` //...`,
213
239
  ` default:`,
@@ -32,7 +32,7 @@
32
32
  {#snippet headerNode()}
33
33
  {@render msg('termsTitle')()}
34
34
  {/snippet}
35
- <div id="kc-terms-text">{msg('termsText')}</div>
35
+ <div id="kc-terms-text">{@render msg('termsText')()}</div>
36
36
  <form
37
37
  class="form-actions"
38
38
  action={url.loginAction}