diff --git a/.astro/astro/content.d.ts b/.astro/astro/content.d.ts index e69de29..4634576 100644 --- a/.astro/astro/content.d.ts +++ b/.astro/astro/content.d.ts @@ -0,0 +1,481 @@ +declare module 'astro:content' { + interface Render { + '.mdx': Promise<{ + Content: import('astro').MarkdownInstance<{}>['Content']; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + components: import('astro').MDXInstance<{}>['components']; + }>; + } +} + +declare module 'astro:content' { + interface RenderResult { + Content: import('astro/runtime/server/index.js').AstroComponentFactory; + headings: import('astro').MarkdownHeading[]; + remarkPluginFrontmatter: Record; + } + interface Render { + '.md': Promise; + } + + export interface RenderedContent { + html: string; + metadata?: { + imagePaths: Array; + [key: string]: unknown; + }; + } +} + +declare module 'astro:content' { + type Flatten = T extends { [K: string]: infer U } ? U : never; + + export type CollectionKey = keyof AnyEntryMap; + export type CollectionEntry = Flatten; + + export type ContentCollectionKey = keyof ContentEntryMap; + export type DataCollectionKey = keyof DataEntryMap; + + type AllValuesOf = T extends any ? T[keyof T] : never; + type ValidContentEntrySlug = AllValuesOf< + ContentEntryMap[C] + >['slug']; + + /** @deprecated Use `getEntry` instead. */ + export function getEntryBySlug< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + // Note that this has to accept a regular string too, for SSR + entrySlug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + + /** @deprecated Use `getEntry` instead. */ + export function getDataEntryById( + collection: C, + entryId: E, + ): Promise>; + + export function getCollection>( + collection: C, + filter?: (entry: CollectionEntry) => entry is E, + ): Promise; + export function getCollection( + collection: C, + filter?: (entry: CollectionEntry) => unknown, + ): Promise[]>; + + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >(entry: { + collection: C; + slug: E; + }): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >(entry: { + collection: C; + id: E; + }): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + export function getEntry< + C extends keyof ContentEntryMap, + E extends ValidContentEntrySlug | (string & {}), + >( + collection: C, + slug: E, + ): E extends ValidContentEntrySlug + ? Promise> + : Promise | undefined>; + export function getEntry< + C extends keyof DataEntryMap, + E extends keyof DataEntryMap[C] | (string & {}), + >( + collection: C, + id: E, + ): E extends keyof DataEntryMap[C] + ? Promise + : Promise | undefined>; + + /** Resolve an array of entry references from the same collection */ + export function getEntries( + entries: { + collection: C; + slug: ValidContentEntrySlug; + }[], + ): Promise[]>; + export function getEntries( + entries: { + collection: C; + id: keyof DataEntryMap[C]; + }[], + ): Promise[]>; + + export function render( + entry: AnyEntryMap[C][string], + ): Promise; + + export function reference( + collection: C, + ): import('astro/zod').ZodEffects< + import('astro/zod').ZodString, + C extends keyof ContentEntryMap + ? { + collection: C; + slug: ValidContentEntrySlug; + } + : { + collection: C; + id: keyof DataEntryMap[C]; + } + >; + // Allow generic `string` to avoid excessive type errors in the config + // if `dev` is not running to update as you edit. + // Invalid collection names will be caught at build time. + export function reference( + collection: C, + ): import('astro/zod').ZodEffects; + + type ReturnTypeOrOriginal = T extends (...args: any[]) => infer R ? R : T; + type InferEntrySchema = import('astro/zod').infer< + ReturnTypeOrOriginal['schema']> + >; + + type ContentEntryMap = { + "docs": { +"browsers/ifs-browser.mdx": { + id: "browsers/ifs-browser.mdx"; + slug: "browsers/ifs-browser"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"browsers/index.mdx": { + id: "browsers/index.mdx"; + slug: "browsers"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"browsers/object-browser.mdx": { + id: "browsers/object-browser.mdx"; + slug: "browsers/object-browser"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"browsers/user-library-list.mdx": { + id: "browsers/user-library-list.mdx"; + slug: "browsers/user-library-list"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"dev/api.mdx": { + id: "dev/api.mdx"; + slug: "dev/api"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"dev/getting_started.mdx": { + id: "dev/getting_started.mdx"; + slug: "dev/getting_started"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"dev/scope.mdx": { + id: "dev/scope.mdx"; + slug: "dev/scope"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"dev/variables.mdx": { + id: "dev/variables.mdx"; + slug: "dev/variables"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/actions/custom-vars.mdx": { + id: "developing/actions/custom-vars.mdx"; + slug: "developing/actions/custom-vars"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/actions/execution.mdx": { + id: "developing/actions/execution.mdx"; + slug: "developing/actions/execution"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/actions/index.mdx": { + id: "developing/actions/index.mdx"; + slug: "developing/actions"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/debug/index.mdx": { + id: "developing/debug/index.mdx"; + slug: "developing/debug"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/editing-compiling.mdx": { + id: "developing/editing-compiling.mdx"; + slug: "developing/editing-compiling"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/iledocs.mdx": { + id: "developing/iledocs.mdx"; + slug: "developing/iledocs"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/actions.mdx": { + id: "developing/local/actions.mdx"; + slug: "developing/local/actions"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/azure.mdx": { + id: "developing/local/azure.mdx"; + slug: "developing/local/azure"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/getting-started.mdx": { + id: "developing/local/getting-started.mdx"; + slug: "developing/local/getting-started"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/git.mdx": { + id: "developing/local/git.mdx"; + slug: "developing/local/git"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/migrate.mdx": { + id: "developing/local/migrate.mdx"; + slug: "developing/local/migrate"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/local/structure.mdx": { + id: "developing/local/structure.mdx"; + slug: "developing/local/structure"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"developing/sourcedates.mdx": { + id: "developing/sourcedates.mdx"; + slug: "developing/sourcedates"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/clle/index.mdx": { + id: "extensions/clle/index.mdx"; + slug: "extensions/clle"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/db2i/AI/code-assistant.mdx": { + id: "extensions/db2i/AI/code-assistant.mdx"; + slug: "extensions/db2i/ai/code-assistant"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/db2i/AI/use-cases.mdx": { + id: "extensions/db2i/AI/use-cases.mdx"; + slug: "extensions/db2i/ai/use-cases"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/db2i/index.mdx": { + id: "extensions/db2i/index.mdx"; + slug: "extensions/db2i"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/rpgle/faq.mdx": { + id: "extensions/rpgle/faq.mdx"; + slug: "extensions/rpgle/faq"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/rpgle/index.mdx": { + id: "extensions/rpgle/index.mdx"; + slug: "extensions/rpgle"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"extensions/rpgle/linter.mdx": { + id: "extensions/rpgle/linter.mdx"; + slug: "extensions/rpgle/linter"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"help-and-support.mdx": { + id: "help-and-support.mdx"; + slug: "help-and-support"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"index.mdx": { + id: "index.mdx"; + slug: "index"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"login.mdx": { + id: "login.mdx"; + slug: "login"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"quickstart.mdx": { + id: "quickstart.mdx"; + slug: "quickstart"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"settings/connection.mdx": { + id: "settings/connection.mdx"; + slug: "settings/connection"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"settings/global.mdx": { + id: "settings/global.mdx"; + slug: "settings/global"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"settings/profiles.mdx": { + id: "settings/profiles.mdx"; + slug: "settings/profiles"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/bash.mdx": { + id: "tips/bash.mdx"; + slug: "tips/bash"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/ccsid.mdx": { + id: "tips/ccsid.mdx"; + slug: "tips/ccsid"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/protect.mdx": { + id: "tips/protect.mdx"; + slug: "tips/protect"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/setup.mdx": { + id: "tips/setup.mdx"; + slug: "tips/setup"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/terminals.mdx": { + id: "tips/terminals.mdx"; + slug: "tips/terminals"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"tips/tricks.mdx": { + id: "tips/tricks.mdx"; + slug: "tips/tricks"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"workshop/db2i/index.mdx": { + id: "workshop/db2i/index.mdx"; + slug: "workshop/db2i"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"workshop/git/index.mdx": { + id: "workshop/git/index.mdx"; + slug: "workshop/git"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"workshop/index.mdx": { + id: "workshop/index.mdx"; + slug: "workshop"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +"workshop/node/index.mdx": { + id: "workshop/node/index.mdx"; + slug: "workshop/node"; + body: string; + collection: "docs"; + data: InferEntrySchema<"docs"> +} & { render(): Render[".mdx"] }; +}; + + }; + + type DataEntryMap = { + + }; + + type AnyEntryMap = ContentEntryMap & DataEntryMap; + + export type ContentConfig = typeof import("../../src/content/config.js"); +} diff --git a/.astro/settings.json b/.astro/settings.json index 80cf7c8..7351075 100644 --- a/.astro/settings.json +++ b/.astro/settings.json @@ -1,5 +1,5 @@ { "_variables": { - "lastUpdateCheck": 1730745009739 + "lastUpdateCheck": 1731863187578 } } \ No newline at end of file diff --git a/src/content/docs/tips/ccsid.mdx b/src/content/docs/tips/ccsid.mdx index 525ff9c..a9539fb 100644 --- a/src/content/docs/tips/ccsid.mdx +++ b/src/content/docs/tips/ccsid.mdx @@ -26,11 +26,14 @@ The special CCSID value 65535 means "no conversion" - and this will disable the If you still are experiencing issues after setting the CCSID value, you may want to check that the IBM i PASE environment locale is set correctly: -### OS 7.4 or greater: +
+OS 7.4 or greater [7.4 and above defaults to UTF-8](https://www.ibm.com/docs/en/i/7.4?topic=system-default-pase-ccsid-locale-changed-utf-8) and there should be no issue. +
-### OS 7.3 or earlier: +
+OS 7.3 or earlier The SSH daemon must start with the correct `PASE_LANG` and `QIBM_PASE_CCSID` environment variables set. You probably want to use a locale that defaults to CCSID 1208. **Locale is case sensitive**. E.g., `FR_FR` is different from `fr_FR`. @@ -40,6 +43,7 @@ The SSH daemon must start with the correct `PASE_LANG` and `QIBM_PASE_CCSID` env 2. **Restart** the SSH daemon. You are also able to change the environment variables at a `*JOB` level, but it is recommend to do it once for your entire system. +
## More information @@ -60,7 +64,8 @@ Since Code for IBM i tries to depend on the server to handle all encoding transl Learn more about object naming rules [in the IBM documentation](https://www.ibm.com/docs/en/i/7.1?topic=rules-names-name). -### Deep dive +
+ Learn more Use the following SQL/CL commands to create an object with a qualified name. @@ -102,4 +107,16 @@ Select * From MEMBERS where LIBRARY_BIT like '%Ü%' ``` -![Bad result set](../../../assets/ccsid1.png) \ No newline at end of file +![Bad result set](../../../assets/ccsid1.png) + +
+ +## Common Errors + +As of Code for IBM i 2.x.x, the extension now uses a new component to execute CL commands and SQL statements. This component is called `cqsh`. + +### The CCSID of the SSH connection does not match the job CCSID + +This error occurs when the CCSID of the SSH connection does not match the job CCSID. The job CCSID is determined by the user profile CCSID or the system value `QCCSID`. The CCSID of the SSH connection is determined by whichever user is running the SSHD - this usually `QSECOFR` and the CCSID of the user profile. + +This message appears when the `cqsh` is not available (not installed or not runnable) and the extension falls back to the old method of executing commands. When that happens, we check the SSHD CCSID and compare it to the job CCSID. If they do not match, the error is thrown, as QSH will not use the user job CCSID, but the SSHD CCSID. \ No newline at end of file