wp-typia 0.24.1 → 0.24.3

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.
@@ -170921,9 +170921,162 @@ Additional information: BADCLIENT: Bad error code, ${badCode} not found in range
170921
170921
  } });
170922
170922
  });
170923
170923
 
170924
- // ../wp-typia-project-tools/src/runtime/pattern-catalog.ts
170925
- import fs from "fs";
170926
- import path from "path";
170924
+ // ../wp-typia-project-tools/src/runtime/string-case.ts
170925
+ var COMMON_ACRONYM_PREFIXES = [
170926
+ "HTML",
170927
+ "HTTP",
170928
+ "JSON",
170929
+ "REST",
170930
+ "UUID",
170931
+ "AJAX",
170932
+ "API",
170933
+ "CPT",
170934
+ "CSS",
170935
+ "CTA",
170936
+ "DOM",
170937
+ "PHP",
170938
+ "SQL",
170939
+ "SVG",
170940
+ "URL",
170941
+ "XML",
170942
+ "ID",
170943
+ "JS",
170944
+ "UI",
170945
+ "WP"
170946
+ ];
170947
+ var COMMON_ACRONYM_LOWERCASE_SUFFIXES = ["slug"];
170948
+ function capitalizeSegment(segment) {
170949
+ return segment.charAt(0).toUpperCase() + segment.slice(1);
170950
+ }
170951
+ function findCommonAcronymPrefix(segment) {
170952
+ return COMMON_ACRONYM_PREFIXES.find((prefix) => segment.startsWith(prefix));
170953
+ }
170954
+ function isCommonAcronymLowercaseSuffix(suffix) {
170955
+ return COMMON_ACRONYM_LOWERCASE_SUFFIXES.includes(suffix);
170956
+ }
170957
+ function splitKnownAcronymSegment(segment) {
170958
+ const prefixes = [];
170959
+ let remaining = segment;
170960
+ while (remaining.length > 0) {
170961
+ const prefix = findCommonAcronymPrefix(remaining);
170962
+ if (!prefix) {
170963
+ break;
170964
+ }
170965
+ const suffix = remaining.slice(prefix.length);
170966
+ if (/^[A-Z][a-z]/.test(suffix)) {
170967
+ return [...prefixes, prefix, suffix].join("-");
170968
+ }
170969
+ if (/^[a-z]+$/.test(suffix) && isCommonAcronymLowercaseSuffix(suffix)) {
170970
+ return [...prefixes, prefix, suffix].join("-");
170971
+ }
170972
+ if (!findCommonAcronymPrefix(suffix)) {
170973
+ break;
170974
+ }
170975
+ prefixes.push(prefix);
170976
+ remaining = suffix;
170977
+ }
170978
+ return segment;
170979
+ }
170980
+ function splitAcronymBoundary(value) {
170981
+ return value.replace(/[A-Z]{2,}[a-z]+/g, splitKnownAcronymSegment);
170982
+ }
170983
+ function toKebabCase(input) {
170984
+ return splitAcronymBoundary(input.trim()).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[^A-Za-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/-{2,}/g, "-").toLowerCase();
170985
+ }
170986
+ function toSnakeCase(input) {
170987
+ return toKebabCase(input).replace(/-/g, "_");
170988
+ }
170989
+ function toPascalCase(input) {
170990
+ return toKebabCase(input).split("-").filter(Boolean).map(capitalizeSegment).join("");
170991
+ }
170992
+ function toCamelCase(input) {
170993
+ const pascalCase = toPascalCase(input);
170994
+ return `${pascalCase.charAt(0).toLowerCase()}${pascalCase.slice(1)}`;
170995
+ }
170996
+ function toSegmentPascalCase(input) {
170997
+ return input.replace(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter(Boolean).map(capitalizeSegment).join("");
170998
+ }
170999
+ function toTitleCase(input) {
171000
+ return toKebabCase(input).split("-").filter(Boolean).map(capitalizeSegment).join(" ");
171001
+ }
171002
+
171003
+ // ../wp-typia-project-tools/src/runtime/scaffold-identifiers.ts
171004
+ var BLOCK_SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
171005
+ var PHP_PREFIX_PATTERN = /^[a-z_][a-z0-9_]*$/;
171006
+ var PHP_PREFIX_MAX_LENGTH = 50;
171007
+ function validateBlockSlug(input) {
171008
+ return BLOCK_SLUG_PATTERN.test(input) || "Use lowercase letters, numbers, and hyphens only";
171009
+ }
171010
+ function validateNamespace(input) {
171011
+ return BLOCK_SLUG_PATTERN.test(toKebabCase(input)) ? true : "Use lowercase letters, numbers, and hyphens only";
171012
+ }
171013
+ function validateTextDomain(input) {
171014
+ return BLOCK_SLUG_PATTERN.test(toKebabCase(input)) ? true : "Use lowercase letters, numbers, and hyphens only";
171015
+ }
171016
+ function validatePhpPrefix(input) {
171017
+ const normalizedPrefix = toSnakeCase(input);
171018
+ if (normalizedPrefix.length > PHP_PREFIX_MAX_LENGTH) {
171019
+ return `Use ${PHP_PREFIX_MAX_LENGTH} characters or fewer to keep generated database identifiers within MySQL limits`;
171020
+ }
171021
+ return PHP_PREFIX_PATTERN.test(normalizedPrefix) ? true : "Use letters, numbers, and underscores only, starting with a letter";
171022
+ }
171023
+ function assertValidIdentifier(label, value, validate) {
171024
+ const result = validate(value);
171025
+ if (result !== true) {
171026
+ throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.INVALID_ARGUMENT, typeof result === "string" ? `${label}: ${result}` : `${label} is invalid`);
171027
+ }
171028
+ return value;
171029
+ }
171030
+ function normalizeBlockSlug(input) {
171031
+ return toKebabCase(input);
171032
+ }
171033
+ function resolveNonEmptyNormalizedBlockSlug(options) {
171034
+ const normalizedSlug = normalizeBlockSlug(options.input);
171035
+ if (normalizedSlug.length > 0) {
171036
+ return normalizedSlug;
171037
+ }
171038
+ if (options.input.trim().length === 0) {
171039
+ throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.MISSING_ARGUMENT, `${options.label} is required. Use \`${options.usage}\`.`);
171040
+ }
171041
+ throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.INVALID_ARGUMENT, `${options.label} "${options.input.trim()}" normalizes to an empty slug. Use letters or numbers so wp-typia can generate a block slug.`);
171042
+ }
171043
+ function resolveValidatedBlockSlug(value) {
171044
+ return assertValidIdentifier("Block slug", normalizeBlockSlug(value), validateBlockSlug);
171045
+ }
171046
+ function resolveValidatedNamespace(value) {
171047
+ return assertValidIdentifier("Namespace", toKebabCase(value), validateNamespace);
171048
+ }
171049
+ function resolveValidatedTextDomain(value) {
171050
+ return assertValidIdentifier("Text domain", toKebabCase(value), validateTextDomain);
171051
+ }
171052
+ function resolveValidatedPhpPrefix(value) {
171053
+ return assertValidIdentifier("PHP prefix", toSnakeCase(value), validatePhpPrefix);
171054
+ }
171055
+ function buildBlockCssClassName(namespace, slug) {
171056
+ const normalizedSlug = resolveValidatedBlockSlug(slug);
171057
+ const normalizedNamespace = typeof namespace === "string" && namespace.trim().length > 0 ? resolveValidatedNamespace(namespace) : "";
171058
+ if (normalizedNamespace === normalizedSlug) {
171059
+ return `wp-block-${normalizedSlug}-block`;
171060
+ }
171061
+ return normalizedNamespace.length > 0 ? `wp-block-${normalizedNamespace}-${normalizedSlug}` : `wp-block-${normalizedSlug}`;
171062
+ }
171063
+ function buildFrontendCssClassName(blockCssClassName) {
171064
+ return `${blockCssClassName}-frontend`;
171065
+ }
171066
+ function resolveScaffoldIdentifiers({
171067
+ namespace,
171068
+ phpPrefix,
171069
+ slug,
171070
+ textDomain
171071
+ }) {
171072
+ const normalizedSlug = resolveValidatedBlockSlug(slug);
171073
+ return {
171074
+ namespace: resolveValidatedNamespace(namespace),
171075
+ phpPrefix: resolveValidatedPhpPrefix(phpPrefix ?? normalizedSlug),
171076
+ slug: normalizedSlug,
171077
+ textDomain: resolveValidatedTextDomain(textDomain ?? normalizedSlug)
171078
+ };
171079
+ }
170927
171080
 
170928
171081
  // ../wp-typia-project-tools/src/runtime/pattern-catalog-section-roles.ts
170929
171082
  import {
@@ -171143,6 +171296,8 @@ function validatePatternContentSectionRoles({
171143
171296
  }
171144
171297
 
171145
171298
  // ../wp-typia-project-tools/src/runtime/pattern-catalog.ts
171299
+ import fs from "fs";
171300
+ import path from "path";
171146
171301
  var PATTERN_CATALOG_SCOPE_IDS = ["full", "section"];
171147
171302
  var PATTERN_SLUG_PATTERN = /^[a-z][a-z0-9-]*$/u;
171148
171303
  var PATTERN_TAG_PATTERN = /^[a-z0-9][a-z0-9-]*$/u;
@@ -171380,85 +171535,6 @@ var HOOKED_BLOCK_POSITION_IDS = ["before", "after", "firstChild", "lastChild"];
171380
171535
  var HOOKED_BLOCK_POSITION_SET = new Set(HOOKED_BLOCK_POSITION_IDS);
171381
171536
  var HOOKED_BLOCK_ANCHOR_PATTERN = /^[a-z0-9-]+\/[a-z0-9-]+$/;
171382
171537
 
171383
- // ../wp-typia-project-tools/src/runtime/string-case.ts
171384
- var COMMON_ACRONYM_PREFIXES = [
171385
- "HTML",
171386
- "HTTP",
171387
- "JSON",
171388
- "REST",
171389
- "UUID",
171390
- "AJAX",
171391
- "API",
171392
- "CPT",
171393
- "CSS",
171394
- "CTA",
171395
- "DOM",
171396
- "PHP",
171397
- "SQL",
171398
- "SVG",
171399
- "URL",
171400
- "XML",
171401
- "ID",
171402
- "JS",
171403
- "UI",
171404
- "WP"
171405
- ];
171406
- var COMMON_ACRONYM_LOWERCASE_SUFFIXES = ["slug"];
171407
- function capitalizeSegment(segment) {
171408
- return segment.charAt(0).toUpperCase() + segment.slice(1);
171409
- }
171410
- function findCommonAcronymPrefix(segment) {
171411
- return COMMON_ACRONYM_PREFIXES.find((prefix) => segment.startsWith(prefix));
171412
- }
171413
- function isCommonAcronymLowercaseSuffix(suffix) {
171414
- return COMMON_ACRONYM_LOWERCASE_SUFFIXES.includes(suffix);
171415
- }
171416
- function splitKnownAcronymSegment(segment) {
171417
- const prefixes = [];
171418
- let remaining = segment;
171419
- while (remaining.length > 0) {
171420
- const prefix = findCommonAcronymPrefix(remaining);
171421
- if (!prefix) {
171422
- break;
171423
- }
171424
- const suffix = remaining.slice(prefix.length);
171425
- if (/^[A-Z][a-z]/.test(suffix)) {
171426
- return [...prefixes, prefix, suffix].join("-");
171427
- }
171428
- if (/^[a-z]+$/.test(suffix) && isCommonAcronymLowercaseSuffix(suffix)) {
171429
- return [...prefixes, prefix, suffix].join("-");
171430
- }
171431
- if (!findCommonAcronymPrefix(suffix)) {
171432
- break;
171433
- }
171434
- prefixes.push(prefix);
171435
- remaining = suffix;
171436
- }
171437
- return segment;
171438
- }
171439
- function splitAcronymBoundary(value) {
171440
- return value.replace(/[A-Z]{2,}[a-z]+/g, splitKnownAcronymSegment);
171441
- }
171442
- function toKebabCase(input) {
171443
- return splitAcronymBoundary(input.trim()).replace(/([a-z0-9])([A-Z])/g, "$1-$2").replace(/[^A-Za-z0-9]+/g, "-").replace(/^-+|-+$/g, "").replace(/-{2,}/g, "-").toLowerCase();
171444
- }
171445
- function toSnakeCase(input) {
171446
- return toKebabCase(input).replace(/-/g, "_");
171447
- }
171448
- function toPascalCase(input) {
171449
- return toKebabCase(input).split("-").filter(Boolean).map(capitalizeSegment).join("");
171450
- }
171451
- function toCamelCase(input) {
171452
- const pascalCase = toPascalCase(input);
171453
- return `${pascalCase.charAt(0).toLowerCase()}${pascalCase.slice(1)}`;
171454
- }
171455
- function toSegmentPascalCase(input) {
171456
- return input.replace(/[^A-Za-z0-9]+/g, " ").trim().split(/\s+/).filter(Boolean).map(capitalizeSegment).join("");
171457
- }
171458
- function toTitleCase(input) {
171459
- return toKebabCase(input).split("-").filter(Boolean).map(capitalizeSegment).join(" ");
171460
- }
171461
-
171462
171538
  // ../wp-typia-project-tools/src/runtime/cli-add-validation.ts
171463
171539
  var WORKSPACE_GENERATED_SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
171464
171540
  var WORDPRESS_POST_TYPE_PATTERN = /^[a-z0-9_][a-z0-9_-]*$/u;
@@ -171755,36 +171831,6 @@ function assertValidIntegrationEnvService(service = "none") {
171755
171831
  throw new Error(`Integration environment service must be one of: ${INTEGRATION_ENV_SERVICE_IDS.join(", ")}.`);
171756
171832
  }
171757
171833
 
171758
- // ../wp-typia-project-tools/src/runtime/fs-async.ts
171759
- import { promises as fsp } from "fs";
171760
- async function pathExists(filePath) {
171761
- try {
171762
- await fsp.access(filePath);
171763
- return true;
171764
- } catch {
171765
- return false;
171766
- }
171767
- }
171768
- async function readOptionalUtf8File(filePath) {
171769
- try {
171770
- return await fsp.readFile(filePath, "utf8");
171771
- } catch (error) {
171772
- if (isFileNotFoundError(error)) {
171773
- return null;
171774
- }
171775
- throw error;
171776
- }
171777
- }
171778
- function getNodeErrorCode(error) {
171779
- return getOptionalNodeErrorCode(error) ?? "";
171780
- }
171781
- function getOptionalNodeErrorCode(error) {
171782
- return typeof error === "object" && error !== null && "code" in error ? String(error.code) : undefined;
171783
- }
171784
- function isFileNotFoundError(error) {
171785
- return getOptionalNodeErrorCode(error) === "ENOENT";
171786
- }
171787
-
171788
171834
  // ../wp-typia-project-tools/src/runtime/cli-add-help.ts
171789
171835
  function formatAddHelpText() {
171790
171836
  return `Usage:
@@ -171796,7 +171842,7 @@ function formatAddHelpText() {
171796
171842
  wp-typia add variation <name> --block <block-slug> [--dry-run]
171797
171843
  wp-typia add style <name> --block <block-slug> [--dry-run]
171798
171844
  wp-typia add transform <name> --from <namespace/block> --to <block-slug|namespace/block-slug> [--dry-run]
171799
- wp-typia add pattern <name> [--scope <full|section>] [--section-role <role>] [--catalog-title <title>] [--tags <tag,...>|--tag <tag>...] [--thumbnail-url <url>] [--dry-run]
171845
+ wp-typia add pattern <name> [--scope <full|section>] [--section-role <role>] [--catalog-title <title>] [--tags <tag,...>] [--tag <tag>...] [--thumbnail-url <url>] [--dry-run]
171800
171846
  wp-typia add binding-source <name> [--block <block-slug|namespace/block-slug> --attribute <attribute>] [--from-post-meta|--post-meta <post-meta> [--meta-path <field>]] [--dry-run]
171801
171847
  wp-typia add contract <name> [--type <ExportedTypeName>] [--dry-run]
171802
171848
  wp-typia add rest-resource <name> [--namespace <vendor/v1>] [--methods <${REST_RESOURCE_METHOD_IDS.join(",")}>] [--route-pattern <route-pattern>] [--permission-callback <callback>] [--controller-class <ClassName>] [--controller-extends <BaseClass>] [--dry-run]
@@ -171824,7 +171870,7 @@ Notes:
171824
171870
  \`add variation\` targets an existing block slug from \`scripts/block-config.ts\`.
171825
171871
  \`add style\` registers a Block Styles option for an existing generated block.
171826
171872
  \`add transform\` adds a block-to-block transform into an existing generated block.
171827
- \`add pattern\` scaffolds a namespaced PHP pattern shell under \`src/patterns/full/\` or \`src/patterns/sections/\` and records typed catalog metadata in \`PATTERNS\`; pass \`--catalog-title "Hero Photo"\` to override the generated catalog title, and pass \`--tags hero,landing\` or repeat \`--tag hero --tag landing\` to set catalog tags.
171873
+ \`add pattern\` scaffolds a namespaced PHP pattern shell under \`src/patterns/full/\` or \`src/patterns/sections/\` and records typed catalog metadata in \`PATTERNS\`; pass \`--catalog-title "Hero Photo"\` to override the generated catalog title, pass \`--tags hero,landing\` for a comma-separated tag list, and repeat \`--tag hero --tag landing\` for single tag values.
171828
171874
  \`add binding-source\` scaffolds shared PHP and editor registration under \`src/bindings/\`; pass \`--block\` and \`--attribute\` together to declare an end-to-end bindable attribute on an existing generated block. Pass \`--from-post-meta\` or \`--post-meta\` to generate a source backed by a typed post-meta contract; \`--meta-path\` selects one top-level field as the default binding arg.
171829
171875
  \`add contract\` registers a standalone TypeScript wire contract under \`src/contracts/\` and generates a stable JSON Schema artifact without creating PHP route glue.
171830
171876
  \`add rest-resource\` scaffolds plugin-level TypeScript REST contracts under \`src/rest/\` and PHP route glue under \`inc/rest/\`. Use \`--route-pattern\`, \`--permission-callback\`, \`--controller-class\`, and \`--controller-extends\` when an existing WordPress controller or permission model needs to own part of the generated route surface.
@@ -171835,87 +171881,41 @@ Notes:
171835
171881
  \`add hooked-block\` patches an existing workspace block's \`block.json\` \`blockHooks\` metadata.
171836
171882
  \`add editor-plugin\` scaffolds a document-level editor extension under \`src/editor-plugins/\`; legacy aliases \`PluginSidebar\` and \`PluginDocumentSettingPanel\` resolve to \`sidebar\` and \`document-setting-panel\`.`;
171837
171883
  }
171884
+ // ../wp-typia-project-tools/src/runtime/cli-add-filesystem.ts
171885
+ import { promises as fsp2 } from "fs";
171886
+ import path2 from "path";
171838
171887
 
171839
- // ../wp-typia-project-tools/src/runtime/scaffold-identifiers.ts
171840
- var BLOCK_SLUG_PATTERN = /^[a-z][a-z0-9-]*$/;
171841
- var PHP_PREFIX_PATTERN = /^[a-z_][a-z0-9_]*$/;
171842
- var PHP_PREFIX_MAX_LENGTH = 50;
171843
- function validateBlockSlug(input) {
171844
- return BLOCK_SLUG_PATTERN.test(input) || "Use lowercase letters, numbers, and hyphens only";
171845
- }
171846
- function validateNamespace(input) {
171847
- return BLOCK_SLUG_PATTERN.test(toKebabCase(input)) ? true : "Use lowercase letters, numbers, and hyphens only";
171848
- }
171849
- function validateTextDomain(input) {
171850
- return BLOCK_SLUG_PATTERN.test(toKebabCase(input)) ? true : "Use lowercase letters, numbers, and hyphens only";
171851
- }
171852
- function validatePhpPrefix(input) {
171853
- const normalizedPrefix = toSnakeCase(input);
171854
- if (normalizedPrefix.length > PHP_PREFIX_MAX_LENGTH) {
171855
- return `Use ${PHP_PREFIX_MAX_LENGTH} characters or fewer to keep generated database identifiers within MySQL limits`;
171856
- }
171857
- return PHP_PREFIX_PATTERN.test(normalizedPrefix) ? true : "Use letters, numbers, and underscores only, starting with a letter";
171858
- }
171859
- function assertValidIdentifier(label, value, validate) {
171860
- const result = validate(value);
171861
- if (result !== true) {
171862
- throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.INVALID_ARGUMENT, typeof result === "string" ? `${label}: ${result}` : `${label} is invalid`);
171888
+ // ../wp-typia-project-tools/src/runtime/fs-async.ts
171889
+ import { promises as fsp } from "fs";
171890
+ async function pathExists(filePath) {
171891
+ try {
171892
+ await fsp.access(filePath);
171893
+ return true;
171894
+ } catch {
171895
+ return false;
171863
171896
  }
171864
- return value;
171865
- }
171866
- function normalizeBlockSlug(input) {
171867
- return toKebabCase(input);
171868
171897
  }
171869
- function resolveNonEmptyNormalizedBlockSlug(options) {
171870
- const normalizedSlug = normalizeBlockSlug(options.input);
171871
- if (normalizedSlug.length > 0) {
171872
- return normalizedSlug;
171873
- }
171874
- if (options.input.trim().length === 0) {
171875
- throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.MISSING_ARGUMENT, `${options.label} is required. Use \`${options.usage}\`.`);
171898
+ async function readOptionalUtf8File(filePath) {
171899
+ try {
171900
+ return await fsp.readFile(filePath, "utf8");
171901
+ } catch (error) {
171902
+ if (isFileNotFoundError(error)) {
171903
+ return null;
171904
+ }
171905
+ throw error;
171876
171906
  }
171877
- throw createCliDiagnosticCodeError(CLI_DIAGNOSTIC_CODES.INVALID_ARGUMENT, `${options.label} "${options.input.trim()}" normalizes to an empty slug. Use letters or numbers so wp-typia can generate a block slug.`);
171878
- }
171879
- function resolveValidatedBlockSlug(value) {
171880
- return assertValidIdentifier("Block slug", normalizeBlockSlug(value), validateBlockSlug);
171881
- }
171882
- function resolveValidatedNamespace(value) {
171883
- return assertValidIdentifier("Namespace", toKebabCase(value), validateNamespace);
171884
- }
171885
- function resolveValidatedTextDomain(value) {
171886
- return assertValidIdentifier("Text domain", toKebabCase(value), validateTextDomain);
171887
171907
  }
171888
- function resolveValidatedPhpPrefix(value) {
171889
- return assertValidIdentifier("PHP prefix", toSnakeCase(value), validatePhpPrefix);
171890
- }
171891
- function buildBlockCssClassName(namespace, slug) {
171892
- const normalizedSlug = resolveValidatedBlockSlug(slug);
171893
- const normalizedNamespace = typeof namespace === "string" && namespace.trim().length > 0 ? resolveValidatedNamespace(namespace) : "";
171894
- if (normalizedNamespace === normalizedSlug) {
171895
- return `wp-block-${normalizedSlug}-block`;
171896
- }
171897
- return normalizedNamespace.length > 0 ? `wp-block-${normalizedNamespace}-${normalizedSlug}` : `wp-block-${normalizedSlug}`;
171908
+ function getNodeErrorCode(error) {
171909
+ return getOptionalNodeErrorCode(error) ?? "";
171898
171910
  }
171899
- function buildFrontendCssClassName(blockCssClassName) {
171900
- return `${blockCssClassName}-frontend`;
171911
+ function getOptionalNodeErrorCode(error) {
171912
+ return typeof error === "object" && error !== null && "code" in error ? String(error.code) : undefined;
171901
171913
  }
171902
- function resolveScaffoldIdentifiers({
171903
- namespace,
171904
- phpPrefix,
171905
- slug,
171906
- textDomain
171907
- }) {
171908
- const normalizedSlug = resolveValidatedBlockSlug(slug);
171909
- return {
171910
- namespace: resolveValidatedNamespace(namespace),
171911
- phpPrefix: resolveValidatedPhpPrefix(phpPrefix ?? normalizedSlug),
171912
- slug: normalizedSlug,
171913
- textDomain: resolveValidatedTextDomain(textDomain ?? normalizedSlug)
171914
- };
171914
+ function isFileNotFoundError(error) {
171915
+ return getOptionalNodeErrorCode(error) === "ENOENT";
171915
171916
  }
171917
+
171916
171918
  // ../wp-typia-project-tools/src/runtime/cli-add-filesystem.ts
171917
- import { promises as fsp2 } from "fs";
171918
- import path2 from "path";
171919
171919
  function getWorkspaceBootstrapPath(workspace) {
171920
171920
  const workspaceBaseName = workspace.packageName.split("/").pop() ?? workspace.packageName;
171921
171921
  return path2.join(workspace.projectDir, `${workspaceBaseName}.php`);
@@ -173818,6 +173818,6 @@ async function appendWorkspaceInventoryEntries(projectDir, options) {
173818
173818
  await writeFile(blockConfigPath, nextSource, "utf8");
173819
173819
  }
173820
173820
  }
173821
- export { toKebabCase, toSnakeCase, toPascalCase, toCamelCase, toSegmentPascalCase, toTitleCase, validateBlockSlug, validateNamespace, normalizeBlockSlug, resolveNonEmptyNormalizedBlockSlug, buildBlockCssClassName, buildFrontendCssClassName, resolveScaffoldIdentifiers, PATTERN_CATALOG_SCOPE_IDS, isValidPatternThumbnailUrl, resolvePatternCatalogContentFile, validatePatternCatalog, formatPatternCatalogDiagnostics, REST_RESOURCE_METHOD_IDS, MANUAL_REST_CONTRACT_HTTP_METHOD_IDS, MANUAL_REST_CONTRACT_AUTH_IDS, EDITOR_PLUGIN_SLOT_IDS, resolveEditorPluginSlotAlias, ADD_BLOCK_TEMPLATE_IDS, suggestAddBlockTemplateId, HOOKED_BLOCK_POSITION_SET, HOOKED_BLOCK_ANCHOR_PATTERN, REST_RESOURCE_NAMESPACE_PATTERN, assertValidGeneratedSlug, assertValidTypeScriptIdentifier, resolveRestResourceNamespace, assertValidPostMetaPostType, resolvePostMetaKey, assertValidRestResourceMethods, resolveOptionalPhpCallbackReference, resolveOptionalPhpClassReference, assertValidManualRestContractHttpMethod, assertValidManualRestContractAuth, isGeneratedRestResourceRoutePatternCompatible, collectRestRouteNamedCaptureNames, resolveManualRestContractPathPattern, resolveGeneratedRestResourceRoutePattern, assertValidHookedBlockPosition, buildWorkspacePhpPrefix, isAddBlockTemplateId, quoteTsString, assertValidHookAnchor, assertValidEditorPluginSlot, assertValidIntegrationEnvService, pathExists, readOptionalUtf8File, getNodeErrorCode, getOptionalNodeErrorCode, isFileNotFoundError, getWorkspaceBootstrapPath, patchFile, readOptionalFile, snapshotWorkspaceFiles, rollbackWorkspaceMutation, resolveWorkspaceBlock, readWorkspaceBlockJson, getMutableBlockHooks, assertVariationDoesNotExist, assertBlockStyleDoesNotExist, assertBlockTransformDoesNotExist, assertPatternDoesNotExist, assertBindingSourceDoesNotExist, assertRestResourceDoesNotExist, assertPostMetaDoesNotExist, assertContractDoesNotExist, assertAdminViewDoesNotExist, assertAbilityDoesNotExist, assertAiFeatureDoesNotExist, assertEditorPluginDoesNotExist, formatAddHelpText, require_typescript, getPropertyNameText, readWorkspaceInventory, readWorkspaceInventoryAsync, getWorkspaceBlockSelectOptions, getWorkspaceBlockSelectOptionsAsync, escapeRegex, quotePhpString, hasPhpFunctionDefinition, hasPhpFunctionCall, findPhpFunctionRange, replacePhpFunctionDefinition, updateWorkspaceInventorySource, appendWorkspaceInventoryEntries };
173821
+ export { toKebabCase, toSnakeCase, toPascalCase, toCamelCase, toSegmentPascalCase, toTitleCase, validateBlockSlug, validateNamespace, normalizeBlockSlug, resolveNonEmptyNormalizedBlockSlug, buildBlockCssClassName, buildFrontendCssClassName, resolveScaffoldIdentifiers, PATTERN_SECTION_ROLE_PATTERN, PATTERN_CATALOG_SCOPE_IDS, PATTERN_TAG_PATTERN, isValidPatternThumbnailUrl, resolvePatternCatalogContentFile, validatePatternCatalog, formatPatternCatalogDiagnostics, REST_RESOURCE_METHOD_IDS, MANUAL_REST_CONTRACT_HTTP_METHOD_IDS, MANUAL_REST_CONTRACT_AUTH_IDS, EDITOR_PLUGIN_SLOT_IDS, resolveEditorPluginSlotAlias, ADD_BLOCK_TEMPLATE_IDS, suggestAddBlockTemplateId, HOOKED_BLOCK_POSITION_SET, HOOKED_BLOCK_ANCHOR_PATTERN, REST_RESOURCE_NAMESPACE_PATTERN, assertValidGeneratedSlug, assertValidTypeScriptIdentifier, resolveRestResourceNamespace, assertValidPostMetaPostType, resolvePostMetaKey, assertValidRestResourceMethods, resolveOptionalPhpCallbackReference, resolveOptionalPhpClassReference, assertValidManualRestContractHttpMethod, assertValidManualRestContractAuth, isGeneratedRestResourceRoutePatternCompatible, collectRestRouteNamedCaptureNames, resolveManualRestContractPathPattern, resolveGeneratedRestResourceRoutePattern, assertValidHookedBlockPosition, buildWorkspacePhpPrefix, isAddBlockTemplateId, quoteTsString, assertValidHookAnchor, assertValidEditorPluginSlot, assertValidIntegrationEnvService, pathExists, readOptionalUtf8File, getNodeErrorCode, getOptionalNodeErrorCode, isFileNotFoundError, getWorkspaceBootstrapPath, patchFile, readOptionalFile, snapshotWorkspaceFiles, rollbackWorkspaceMutation, resolveWorkspaceBlock, readWorkspaceBlockJson, getMutableBlockHooks, assertVariationDoesNotExist, assertBlockStyleDoesNotExist, assertBlockTransformDoesNotExist, assertPatternDoesNotExist, assertBindingSourceDoesNotExist, assertRestResourceDoesNotExist, assertPostMetaDoesNotExist, assertContractDoesNotExist, assertAdminViewDoesNotExist, assertAbilityDoesNotExist, assertAiFeatureDoesNotExist, assertEditorPluginDoesNotExist, formatAddHelpText, require_typescript, getPropertyNameText, readWorkspaceInventory, readWorkspaceInventoryAsync, getWorkspaceBlockSelectOptions, getWorkspaceBlockSelectOptionsAsync, escapeRegex, quotePhpString, hasPhpFunctionDefinition, hasPhpFunctionCall, findPhpFunctionRange, replacePhpFunctionDefinition, updateWorkspaceInventorySource, appendWorkspaceInventoryEntries };
173822
173822
 
173823
- //# debugId=3009CBE929AC544A64756E2164756E21
173823
+ //# debugId=ECEDE0CAF67562F064756E2164756E21
@@ -1,7 +1,7 @@
1
1
  // @bun
2
2
  import {
3
3
  getPackageVersions
4
- } from "./cli-zjw3eqfj.js";
4
+ } from "./cli-84c7wff4.js";
5
5
  import"./cli-8hxf9qw6.js";
6
6
  import {
7
7
  discoverMigrationInitLayout
@@ -13,7 +13,7 @@ import {
13
13
  snapshotWorkspaceFiles,
14
14
  toPascalCase,
15
15
  updateWorkspaceInventorySource
16
- } from "./cli-h2v72j8q.js";
16
+ } from "./cli-fv4h3ydt.js";
17
17
  import"./cli-cvxvcw7c.js";
18
18
  import"./cli-bajwv85z.js";
19
19
  import {