@prisma/composer-prisma-cloud 0.2.0-dev.2 → 0.2.0-dev.4

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.
@@ -111,15 +111,19 @@ function requireExtension(extension, factory) {
111
111
  if (typeof extension !== "string" || extension.length === 0) throw new Error(`${factory}() requires a non-empty extension (the authoring extension's package name).`);
112
112
  }
113
113
  /**
114
- * Config keys join address/input/param names with "_" and uppercase an
115
- * underscore inside a name would collide with that separator (e.g. param
116
- * "db_url" vs input "db"'s param "url" both hitting env key "DB_URL").
114
+ * Core's grammar for every name that becomes a config-key segment
115
+ * addresses, input/param/secret names: ASCII letters and digits only.
116
+ * Conservative by design so any target medium POSIX env-var keys
117
+ * included — can uppercase and "_"-join segments without escaping.
117
118
  */
118
- function requireNoUnderscoreName(name, kind, factory) {
119
- if (name.includes("_")) throw new Error(`${factory}() ${kind} name "${name}" may not contain "_" — config keys join names with "_" as the separator (e.g. an input "db"'s param "url" becomes env key "DB_URL"), so an underscore inside a name would collide with that separator.`);
119
+ function isConfigKeySegment(name) {
120
+ return /^[A-Za-z0-9]+$/.test(name);
120
121
  }
121
- function requireNoUnderscoreNames(names, kind, factory) {
122
- for (const name of names) requireNoUnderscoreName(name, kind, factory);
122
+ function requireConfigKeySegmentName(name, kind, factory) {
123
+ if (!isConfigKeySegment(name)) throw new Error(`${factory}() ${kind} name "${name}" must contain only ASCII letters and digits ([A-Za-z0-9]) — declared names derive deterministic config keys, uppercased and joined with "_" (an input "db"'s param "url" becomes config key "DB_URL"), so an underscore inside a name collides with that separator and any other character has no place in a config key. "${name}" would put "${name.toUpperCase()}" inside the derived key.`);
124
+ }
125
+ function requireConfigKeySegmentNames(names, kind, factory) {
126
+ for (const name of names) requireConfigKeySegmentName(name, kind, factory);
123
127
  }
124
128
  function freezeParams(params) {
125
129
  const frozen = {};
@@ -190,9 +194,9 @@ function service$1(def) {
190
194
  requireName(def.name, "service");
191
195
  requireExtension(def.extension, "service");
192
196
  requireType(def.type, "service");
193
- requireNoUnderscoreNames(Object.keys(def.inputs), "input", "service");
194
- requireNoUnderscoreNames(Object.keys(def.params), "param", "service");
195
- requireNoUnderscoreNames(Object.keys(def.secrets ?? {}), "secret", "service");
197
+ requireConfigKeySegmentNames(Object.keys(def.inputs), "input", "service");
198
+ requireConfigKeySegmentNames(Object.keys(def.params), "param", "service");
199
+ requireConfigKeySegmentNames(Object.keys(def.secrets ?? {}), "secret", "service");
196
200
  for (const slot of Object.keys(def.secrets ?? {})) if (Object.hasOwn(def.params, slot)) throw new Error(`service() secret slot "${slot}" collides with a param of the same name — a secret slot and a service param derive the same config key (COMPOSER_<addr>_${slot.toUpperCase()}); rename one.`);
197
201
  return Object.freeze({
198
202
  [NODE]: true,
@@ -214,7 +218,7 @@ function service$1(def) {
214
218
  */
215
219
  function dependency(def) {
216
220
  requireType(def.type, "dependency");
217
- requireNoUnderscoreNames(Object.keys(def.connection.params), "param", "dependency");
221
+ requireConfigKeySegmentNames(Object.keys(def.connection.params), "param", "dependency");
218
222
  const connection = Object.freeze({
219
223
  params: freezeParams(def.connection.params),
220
224
  hydrate: def.connection.hydrate