@aidc-toolkit/gs1 1.0.42-beta → 1.0.43
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/dist/index.cjs +19 -0
- package/dist/index.d.cts +2205 -0
- package/dist/index.d.ts +2205 -63
- package/dist/index.js +3 -36
- package/package.json +4 -4
- package/src/gcp-length.ts +55 -18
- package/test/gcp-length.test.ts +12 -7
- package/tsconfig-src.tsbuildinfo +1 -1
- package/dist/abstract-identifier-creator.d.ts +0 -41
- package/dist/abstract-identifier-creator.d.ts.map +0 -1
- package/dist/abstract-identifier-creator.js +0 -73
- package/dist/abstract-identifier-creator.js.map +0 -1
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts +0 -36
- package/dist/abstract-non-gtin-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/abstract-non-gtin-numeric-identifier-creator.js +0 -37
- package/dist/abstract-non-gtin-numeric-identifier-creator.js.map +0 -1
- package/dist/abstract-numeric-identifier-creator.d.ts +0 -34
- package/dist/abstract-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/abstract-numeric-identifier-creator.js +0 -154
- package/dist/abstract-numeric-identifier-creator.js.map +0 -1
- package/dist/character-set.d.ts +0 -27
- package/dist/character-set.d.ts.map +0 -1
- package/dist/character-set.js +0 -83
- package/dist/character-set.js.map +0 -1
- package/dist/check.d.ts +0 -81
- package/dist/check.d.ts.map +0 -1
- package/dist/check.js +0 -218
- package/dist/check.js.map +0 -1
- package/dist/content-character-set-creators.d.ts +0 -4
- package/dist/content-character-set-creators.d.ts.map +0 -1
- package/dist/content-character-set-creators.js +0 -9
- package/dist/content-character-set-creators.js.map +0 -1
- package/dist/content-character-set.d.ts +0 -26
- package/dist/content-character-set.d.ts.map +0 -1
- package/dist/content-character-set.js +0 -18
- package/dist/content-character-set.js.map +0 -1
- package/dist/gcp-length-cache.d.ts +0 -86
- package/dist/gcp-length-cache.d.ts.map +0 -1
- package/dist/gcp-length-cache.js +0 -237
- package/dist/gcp-length-cache.js.map +0 -1
- package/dist/gcp-length-data.d.ts +0 -108
- package/dist/gcp-length-data.d.ts.map +0 -1
- package/dist/gcp-length-data.js +0 -53
- package/dist/gcp-length-data.js.map +0 -1
- package/dist/gcp-length-tree.d.ts +0 -33
- package/dist/gcp-length-tree.d.ts.map +0 -1
- package/dist/gcp-length-tree.js +0 -13
- package/dist/gcp-length-tree.js.map +0 -1
- package/dist/gcp-length.d.ts +0 -75
- package/dist/gcp-length.d.ts.map +0 -1
- package/dist/gcp-length.js +0 -357
- package/dist/gcp-length.js.map +0 -1
- package/dist/gtin-creator.d.ts +0 -47
- package/dist/gtin-creator.d.ts.map +0 -1
- package/dist/gtin-creator.js +0 -64
- package/dist/gtin-creator.js.map +0 -1
- package/dist/gtin-descriptor.d.ts +0 -22
- package/dist/gtin-descriptor.d.ts.map +0 -1
- package/dist/gtin-descriptor.js +0 -2
- package/dist/gtin-descriptor.js.map +0 -1
- package/dist/gtin-length.d.ts +0 -64
- package/dist/gtin-length.d.ts.map +0 -1
- package/dist/gtin-length.js +0 -36
- package/dist/gtin-length.js.map +0 -1
- package/dist/gtin-type.d.ts +0 -26
- package/dist/gtin-type.d.ts.map +0 -1
- package/dist/gtin-type.js +0 -7
- package/dist/gtin-type.js.map +0 -1
- package/dist/gtin-validator.d.ts +0 -132
- package/dist/gtin-validator.d.ts.map +0 -1
- package/dist/gtin-validator.js +0 -349
- package/dist/gtin-validator.js.map +0 -1
- package/dist/identifier-creator.d.ts +0 -31
- package/dist/identifier-creator.d.ts.map +0 -1
- package/dist/identifier-creator.js +0 -2
- package/dist/identifier-creator.js.map +0 -1
- package/dist/identifier-creators.d.ts +0 -118
- package/dist/identifier-creators.d.ts.map +0 -1
- package/dist/identifier-creators.js +0 -92
- package/dist/identifier-creators.js.map +0 -1
- package/dist/identifier-descriptor.d.ts +0 -27
- package/dist/identifier-descriptor.d.ts.map +0 -1
- package/dist/identifier-descriptor.js +0 -2
- package/dist/identifier-descriptor.js.map +0 -1
- package/dist/identifier-descriptors.d.ts +0 -106
- package/dist/identifier-descriptors.d.ts.map +0 -1
- package/dist/identifier-descriptors.js +0 -262
- package/dist/identifier-descriptors.js.map +0 -1
- package/dist/identifier-extension.d.ts +0 -82
- package/dist/identifier-extension.d.ts.map +0 -1
- package/dist/identifier-extension.js +0 -79
- package/dist/identifier-extension.js.map +0 -1
- package/dist/identifier-type.d.ts +0 -62
- package/dist/identifier-type.d.ts.map +0 -1
- package/dist/identifier-type.js +0 -54
- package/dist/identifier-type.js.map +0 -1
- package/dist/identifier-validator.d.ts +0 -85
- package/dist/identifier-validator.d.ts.map +0 -1
- package/dist/identifier-validator.js +0 -107
- package/dist/identifier-validator.js.map +0 -1
- package/dist/identifier-validators.d.ts +0 -131
- package/dist/identifier-validators.d.ts.map +0 -1
- package/dist/identifier-validators.js +0 -167
- package/dist/identifier-validators.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/leader-type.d.ts +0 -26
- package/dist/leader-type.d.ts.map +0 -1
- package/dist/leader-type.js +0 -18
- package/dist/leader-type.js.map +0 -1
- package/dist/locale/en/locale-resources.d.ts +0 -48
- package/dist/locale/en/locale-resources.d.ts.map +0 -1
- package/dist/locale/en/locale-resources.js +0 -47
- package/dist/locale/en/locale-resources.js.map +0 -1
- package/dist/locale/fr/locale-resources.d.ts +0 -48
- package/dist/locale/fr/locale-resources.d.ts.map +0 -1
- package/dist/locale/fr/locale-resources.js +0 -47
- package/dist/locale/fr/locale-resources.js.map +0 -1
- package/dist/locale/i18n.d.ts +0 -27
- package/dist/locale/i18n.d.ts.map +0 -1
- package/dist/locale/i18n.js +0 -35
- package/dist/locale/i18n.js.map +0 -1
- package/dist/non-gtin-numeric-identifier-creator.d.ts +0 -12
- package/dist/non-gtin-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/non-gtin-numeric-identifier-creator.js +0 -2
- package/dist/non-gtin-numeric-identifier-creator.js.map +0 -1
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts +0 -22
- package/dist/non-gtin-numeric-identifier-descriptor.d.ts.map +0 -1
- package/dist/non-gtin-numeric-identifier-descriptor.js +0 -2
- package/dist/non-gtin-numeric-identifier-descriptor.js.map +0 -1
- package/dist/non-gtin-numeric-identifier-type.d.ts +0 -26
- package/dist/non-gtin-numeric-identifier-type.d.ts.map +0 -1
- package/dist/non-gtin-numeric-identifier-type.js +0 -8
- package/dist/non-gtin-numeric-identifier-type.js.map +0 -1
- package/dist/non-gtin-numeric-identifier-validator.d.ts +0 -12
- package/dist/non-gtin-numeric-identifier-validator.d.ts.map +0 -1
- package/dist/non-gtin-numeric-identifier-validator.js +0 -10
- package/dist/non-gtin-numeric-identifier-validator.js.map +0 -1
- package/dist/non-numeric-identifier-creator.d.ts +0 -40
- package/dist/non-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/non-numeric-identifier-creator.js +0 -82
- package/dist/non-numeric-identifier-creator.js.map +0 -1
- package/dist/non-numeric-identifier-descriptor.d.ts +0 -26
- package/dist/non-numeric-identifier-descriptor.d.ts.map +0 -1
- package/dist/non-numeric-identifier-descriptor.js +0 -2
- package/dist/non-numeric-identifier-descriptor.js.map +0 -1
- package/dist/non-numeric-identifier-type.d.ts +0 -26
- package/dist/non-numeric-identifier-type.d.ts.map +0 -1
- package/dist/non-numeric-identifier-type.js +0 -8
- package/dist/non-numeric-identifier-type.js.map +0 -1
- package/dist/non-numeric-identifier-validator.d.ts +0 -41
- package/dist/non-numeric-identifier-validator.d.ts.map +0 -1
- package/dist/non-numeric-identifier-validator.js +0 -69
- package/dist/non-numeric-identifier-validator.js.map +0 -1
- package/dist/non-serializable-numeric-identifier-creator.d.ts +0 -10
- package/dist/non-serializable-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/non-serializable-numeric-identifier-creator.js +0 -8
- package/dist/non-serializable-numeric-identifier-creator.js.map +0 -1
- package/dist/non-serializable-numeric-identifier-descriptor.d.ts +0 -12
- package/dist/non-serializable-numeric-identifier-descriptor.d.ts.map +0 -1
- package/dist/non-serializable-numeric-identifier-descriptor.js +0 -2
- package/dist/non-serializable-numeric-identifier-descriptor.js.map +0 -1
- package/dist/non-serializable-numeric-identifier-type.d.ts +0 -26
- package/dist/non-serializable-numeric-identifier-type.d.ts.map +0 -1
- package/dist/non-serializable-numeric-identifier-type.js +0 -7
- package/dist/non-serializable-numeric-identifier-type.js.map +0 -1
- package/dist/non-serializable-numeric-identifier-validator.d.ts +0 -16
- package/dist/non-serializable-numeric-identifier-validator.d.ts.map +0 -1
- package/dist/non-serializable-numeric-identifier-validator.js +0 -17
- package/dist/non-serializable-numeric-identifier-validator.js.map +0 -1
- package/dist/numeric-identifier-creator.d.ts +0 -53
- package/dist/numeric-identifier-creator.d.ts.map +0 -1
- package/dist/numeric-identifier-creator.js +0 -2
- package/dist/numeric-identifier-creator.js.map +0 -1
- package/dist/numeric-identifier-descriptor.d.ts +0 -22
- package/dist/numeric-identifier-descriptor.d.ts.map +0 -1
- package/dist/numeric-identifier-descriptor.js +0 -2
- package/dist/numeric-identifier-descriptor.js.map +0 -1
- package/dist/numeric-identifier-type.d.ts +0 -26
- package/dist/numeric-identifier-type.d.ts.map +0 -1
- package/dist/numeric-identifier-type.js +0 -7
- package/dist/numeric-identifier-type.js.map +0 -1
- package/dist/numeric-identifier-validator.d.ts +0 -38
- package/dist/numeric-identifier-validator.d.ts.map +0 -1
- package/dist/numeric-identifier-validator.js +0 -61
- package/dist/numeric-identifier-validator.js.map +0 -1
- package/dist/prefix-manager.d.ts +0 -151
- package/dist/prefix-manager.d.ts.map +0 -1
- package/dist/prefix-manager.js +0 -297
- package/dist/prefix-manager.js.map +0 -1
- package/dist/prefix-provider.d.ts +0 -27
- package/dist/prefix-provider.d.ts.map +0 -1
- package/dist/prefix-provider.js +0 -2
- package/dist/prefix-provider.js.map +0 -1
- package/dist/prefix-type.d.ts +0 -26
- package/dist/prefix-type.d.ts.map +0 -1
- package/dist/prefix-type.js +0 -18
- package/dist/prefix-type.js.map +0 -1
- package/dist/prefix-validator.d.ts +0 -71
- package/dist/prefix-validator.d.ts.map +0 -1
- package/dist/prefix-validator.js +0 -204
- package/dist/prefix-validator.js.map +0 -1
- package/dist/serializable-numeric-identifier-creator.d.ts +0 -48
- package/dist/serializable-numeric-identifier-creator.d.ts.map +0 -1
- package/dist/serializable-numeric-identifier-creator.js +0 -93
- package/dist/serializable-numeric-identifier-creator.js.map +0 -1
- package/dist/serializable-numeric-identifier-descriptor.d.ts +0 -26
- package/dist/serializable-numeric-identifier-descriptor.d.ts.map +0 -1
- package/dist/serializable-numeric-identifier-descriptor.js +0 -2
- package/dist/serializable-numeric-identifier-descriptor.js.map +0 -1
- package/dist/serializable-numeric-identifier-type.d.ts +0 -26
- package/dist/serializable-numeric-identifier-type.d.ts.map +0 -1
- package/dist/serializable-numeric-identifier-type.js +0 -8
- package/dist/serializable-numeric-identifier-type.js.map +0 -1
- package/dist/serializable-numeric-identifier-validator.d.ts +0 -67
- package/dist/serializable-numeric-identifier-validator.d.ts.map +0 -1
- package/dist/serializable-numeric-identifier-validator.js +0 -97
- package/dist/serializable-numeric-identifier-validator.js.map +0 -1
- package/dist/variable-measure.d.ts +0 -68
- package/dist/variable-measure.d.ts.map +0 -1
- package/dist/variable-measure.js +0 -210
- package/dist/variable-measure.js.map +0 -1
- package/dist/verified-by-gs1.d.ts +0 -22
- package/dist/verified-by-gs1.d.ts.map +0 -1
- package/dist/verified-by-gs1.js +0 -46
- package/dist/verified-by-gs1.js.map +0 -1
- package/src/gcp-length-tree.ts +0 -39
package/dist/index.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import{i18nCoreInit as Cr,i18nInit as Sr}from"@aidc-toolkit/core";import{i18nUtilityInit as Gr}from"@aidc-toolkit/utility";var I=n=>typeof n=="string",me=()=>{let n,e,t=new Promise((r,i)=>{n=r,e=i});return t.resolve=n,t.reject=e,t},gt=n=>n==null?"":""+n,sr=(n,e,t)=>{n.forEach(r=>{e[r]&&(t[r]=e[r])})},fr=/###/g,It=n=>n&&n.indexOf("###")>-1?n.replace(fr,"."):n,Tt=n=>!n||I(n),ge=(n,e,t)=>{let r=I(e)?e.split("."):e,i=0;for(;i<r.length-1;){if(Tt(n))return{};let o=It(r[i]);!n[o]&&t&&(n[o]=new t),Object.prototype.hasOwnProperty.call(n,o)?n=n[o]:n={},++i}return Tt(n)?{}:{obj:n,k:It(r[i])}},yt=(n,e,t)=>{let{obj:r,k:i}=ge(n,e,Object);if(r!==void 0||e.length===1){r[i]=t;return}let o=e[e.length-1],a=e.slice(0,e.length-1),s=ge(n,a,Object);for(;s.obj===void 0&&a.length;)o=`${a[a.length-1]}.${o}`,a=a.slice(0,a.length-1),s=ge(n,a,Object),s?.obj&&typeof s.obj[`${s.k}.${o}`]<"u"&&(s.obj=void 0);s.obj[`${s.k}.${o}`]=t},dr=(n,e,t,r)=>{let{obj:i,k:o}=ge(n,e,Object);i[o]=i[o]||[],i[o].push(t)},Ce=(n,e)=>{let{obj:t,k:r}=ge(n,e);if(t&&Object.prototype.hasOwnProperty.call(t,r))return t[r]},cr=(n,e,t)=>{let r=Ce(n,t);return r!==void 0?r:Ce(e,t)},bt=(n,e,t)=>{for(let r in e)r!=="__proto__"&&r!=="constructor"&&(r in n?I(n[r])||n[r]instanceof String||I(e[r])||e[r]instanceof String?t&&(n[r]=e[r]):bt(n[r],e[r],t):n[r]=e[r]);return n},ee=n=>n.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),pr={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/"},lr=n=>I(n)?n.replace(/[&<>"'\/]/g,e=>pr[e]):n,Be=class{constructor(e){this.capacity=e,this.regExpMap=new Map,this.regExpQueue=[]}getRegExp(e){let t=this.regExpMap.get(e);if(t!==void 0)return t;let r=new RegExp(e);return this.regExpQueue.length===this.capacity&&this.regExpMap.delete(this.regExpQueue.shift()),this.regExpMap.set(e,r),this.regExpQueue.push(e),r}},ur=[" ",",","?","!",";"],hr=new Be(20),mr=(n,e,t)=>{e=e||"",t=t||"";let r=ur.filter(a=>e.indexOf(a)<0&&t.indexOf(a)<0);if(r.length===0)return!0;let i=hr.getRegExp(`(${r.map(a=>a==="?"?"\\?":a).join("|")})`),o=!i.test(n);if(!o){let a=n.indexOf(t);a>0&&!i.test(n.substring(0,a))&&(o=!0)}return o},Ue=(n,e,t=".")=>{if(!n)return;if(n[e])return Object.prototype.hasOwnProperty.call(n,e)?n[e]:void 0;let r=e.split(t),i=n;for(let o=0;o<r.length;){if(!i||typeof i!="object")return;let a,s="";for(let f=o;f<r.length;++f)if(f!==o&&(s+=t),s+=r[f],a=i[s],a!==void 0){if(["string","number","boolean"].indexOf(typeof a)>-1&&f<r.length-1)continue;o+=f-o+1;break}i=a}return i},Ie=n=>n?.replace("_","-"),gr={type:"logger",log(n){this.output("log",n)},warn(n){this.output("warn",n)},error(n){this.output("error",n)},output(n,e){console?.[n]?.apply?.(console,e)}},He=class n{constructor(e,t={}){this.init(e,t)}init(e,t={}){this.prefix=t.prefix||"i18next:",this.logger=e||gr,this.options=t,this.debug=t.debug}log(...e){return this.forward(e,"log","",!0)}warn(...e){return this.forward(e,"warn","",!0)}error(...e){return this.forward(e,"error","")}deprecate(...e){return this.forward(e,"warn","WARNING DEPRECATED: ",!0)}forward(e,t,r,i){return i&&!this.debug?null:(I(e[0])&&(e[0]=`${r}${this.prefix} ${e[0]}`),this.logger[t](e))}create(e){return new n(this.logger,{prefix:`${this.prefix}:${e}:`,...this.options})}clone(e){return e=e||this.options,e.prefix=e.prefix||this.prefix,new n(this.logger,e)}},z=new He,te=class{constructor(){this.observers={}}on(e,t){return e.split(" ").forEach(r=>{this.observers[r]||(this.observers[r]=new Map);let i=this.observers[r].get(t)||0;this.observers[r].set(t,i+1)}),this}off(e,t){if(this.observers[e]){if(!t){delete this.observers[e];return}this.observers[e].delete(t)}}emit(e,...t){this.observers[e]&&Array.from(this.observers[e].entries()).forEach(([i,o])=>{for(let a=0;a<o;a++)i(...t)}),this.observers["*"]&&Array.from(this.observers["*"].entries()).forEach(([i,o])=>{for(let a=0;a<o;a++)i.apply(i,[e,...t])})}},Se=class extends te{constructor(e,t={ns:["translation"],defaultNS:"translation"}){super(),this.data=e||{},this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.options.ignoreJSONStructure===void 0&&(this.options.ignoreJSONStructure=!0)}addNamespaces(e){this.options.ns.indexOf(e)<0&&this.options.ns.push(e)}removeNamespaces(e){let t=this.options.ns.indexOf(e);t>-1&&this.options.ns.splice(t,1)}getResource(e,t,r,i={}){let o=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,a=i.ignoreJSONStructure!==void 0?i.ignoreJSONStructure:this.options.ignoreJSONStructure,s;e.indexOf(".")>-1?s=e.split("."):(s=[e,t],r&&(Array.isArray(r)?s.push(...r):I(r)&&o?s.push(...r.split(o)):s.push(r)));let f=Ce(this.data,s);return!f&&!t&&!r&&e.indexOf(".")>-1&&(e=s[0],t=s[1],r=s.slice(2).join(".")),f||!a||!I(r)?f:Ue(this.data?.[e]?.[t],r,o)}addResource(e,t,r,i,o={silent:!1}){let a=o.keySeparator!==void 0?o.keySeparator:this.options.keySeparator,s=[e,t];r&&(s=s.concat(a?r.split(a):r)),e.indexOf(".")>-1&&(s=e.split("."),i=t,t=s[1]),this.addNamespaces(t),yt(this.data,s,i),o.silent||this.emit("added",e,t,r,i)}addResources(e,t,r,i={silent:!1}){for(let o in r)(I(r[o])||Array.isArray(r[o]))&&this.addResource(e,t,o,r[o],{silent:!0});i.silent||this.emit("added",e,t,r)}addResourceBundle(e,t,r,i,o,a={silent:!1,skipCopy:!1}){let s=[e,t];e.indexOf(".")>-1&&(s=e.split("."),i=r,r=t,t=s[1]),this.addNamespaces(t);let f=Ce(this.data,s)||{};a.skipCopy||(r=JSON.parse(JSON.stringify(r))),i?bt(f,r,o):f={...f,...r},yt(this.data,s,f),a.silent||this.emit("added",e,t,r)}removeResourceBundle(e,t){this.hasResourceBundle(e,t)&&delete this.data[e][t],this.removeNamespaces(t),this.emit("removed",e,t)}hasResourceBundle(e,t){return this.getResource(e,t)!==void 0}getResourceBundle(e,t){return t||(t=this.options.defaultNS),this.getResource(e,t)}getDataByLanguage(e){return this.data[e]}hasLanguageSomeTranslations(e){let t=this.getDataByLanguage(e);return!!(t&&Object.keys(t)||[]).find(i=>t[i]&&Object.keys(t[i]).length>0)}toJSON(){return this.data}},Rt={processors:{},addPostProcessor(n){this.processors[n.name]=n},handle(n,e,t,r,i){return n.forEach(o=>{e=this.processors[o]?.process(e,t,r,i)??e}),e}},Lt=Symbol("i18next/PATH_KEY");function Ir(){let n=[],e=Object.create(null),t;return e.get=(r,i)=>(t?.revoke?.(),i===Lt?n:(n.push(i),t=Proxy.revocable(r,e),t.proxy)),Proxy.revocable(Object.create(null),e).proxy}function We(n,e){let{[Lt]:t}=n(Ir());return t.join(e?.keySeparator??".")}var Nt={},Fe=n=>!I(n)&&typeof n!="boolean"&&typeof n!="number",Ge=class n extends te{constructor(e,t={}){super(),sr(["resourceStore","languageUtils","pluralResolver","interpolator","backendConnector","i18nFormat","utils"],e,this),this.options=t,this.options.keySeparator===void 0&&(this.options.keySeparator="."),this.logger=z.create("translator")}changeLanguage(e){e&&(this.language=e)}exists(e,t={interpolation:{}}){let r={...t};if(e==null)return!1;let i=this.resolve(e,r);if(i?.res===void 0)return!1;let o=Fe(i.res);return!(r.returnObjects===!1&&o)}extractFromKey(e,t){let r=t.nsSeparator!==void 0?t.nsSeparator:this.options.nsSeparator;r===void 0&&(r=":");let i=t.keySeparator!==void 0?t.keySeparator:this.options.keySeparator,o=t.ns||this.options.defaultNS||[],a=r&&e.indexOf(r)>-1,s=!this.options.userDefinedKeySeparator&&!t.keySeparator&&!this.options.userDefinedNsSeparator&&!t.nsSeparator&&!mr(e,r,i);if(a&&!s){let f=e.match(this.interpolator.nestingRegexp);if(f&&f.length>0)return{key:e,namespaces:I(o)?[o]:o};let d=e.split(r);(r!==i||r===i&&this.options.ns.indexOf(d[0])>-1)&&(o=d.shift()),e=d.join(i)}return{key:e,namespaces:I(o)?[o]:o}}translate(e,t,r){let i=typeof t=="object"?{...t}:t;if(typeof i!="object"&&this.options.overloadTranslationOptionHandler&&(i=this.options.overloadTranslationOptionHandler(arguments)),typeof i=="object"&&(i={...i}),i||(i={}),e==null)return"";typeof e=="function"&&(e=We(e,{...this.options,...i})),Array.isArray(e)||(e=[String(e)]);let o=i.returnDetails!==void 0?i.returnDetails:this.options.returnDetails,a=i.keySeparator!==void 0?i.keySeparator:this.options.keySeparator,{key:s,namespaces:f}=this.extractFromKey(e[e.length-1],i),d=f[f.length-1],p=i.nsSeparator!==void 0?i.nsSeparator:this.options.nsSeparator;p===void 0&&(p=":");let c=i.lng||this.language,m=i.appendNamespaceToCIMode||this.options.appendNamespaceToCIMode;if(c?.toLowerCase()==="cimode")return m?o?{res:`${d}${p}${s}`,usedKey:s,exactUsedKey:s,usedLng:c,usedNS:d,usedParams:this.getUsedParamsDetails(i)}:`${d}${p}${s}`:o?{res:s,usedKey:s,exactUsedKey:s,usedLng:c,usedNS:d,usedParams:this.getUsedParamsDetails(i)}:s;let u=this.resolve(e,i),g=u?.res,C=u?.usedKey||s,b=u?.exactUsedKey||s,D=["[object Number]","[object Function]","[object RegExp]"],S=i.joinArrays!==void 0?i.joinArrays:this.options.joinArrays,A=!this.i18nFormat||this.i18nFormat.handleAsObject,y=i.count!==void 0&&!I(i.count),P=n.hasDefaultValue(i),Z=y?this.pluralResolver.getSuffix(c,i.count,i):"",Q=i.ordinal&&y?this.pluralResolver.getSuffix(c,i.count,{ordinal:!1}):"",lt=y&&!i.ordinal&&i.count===0,U=lt&&i[`defaultValue${this.options.pluralSeparator}zero`]||i[`defaultValue${Z}`]||i[`defaultValue${Q}`]||i.defaultValue,$=g;A&&!g&&P&&($=U);let or=Fe($),ar=Object.prototype.toString.apply($);if(A&&$&&or&&D.indexOf(ar)<0&&!(I(S)&&Array.isArray($))){if(!i.returnObjects&&!this.options.returnObjects){this.options.returnedObjectHandler||this.logger.warn("accessing an object - but returnObjects options is not enabled!");let j=this.options.returnedObjectHandler?this.options.returnedObjectHandler(C,$,{...i,ns:f}):`key '${s} (${this.language})' returned an object instead of string.`;return o?(u.res=j,u.usedParams=this.getUsedParamsDetails(i),u):j}if(a){let j=Array.isArray($),w=j?[]:{},ut=j?b:C;for(let _ in $)if(Object.prototype.hasOwnProperty.call($,_)){let K=`${ut}${a}${_}`;P&&!g?w[_]=this.translate(K,{...i,defaultValue:Fe(U)?U[_]:void 0,joinArrays:!1,ns:f}):w[_]=this.translate(K,{...i,joinArrays:!1,ns:f}),w[_]===K&&(w[_]=$[_])}g=w}}else if(A&&I(S)&&Array.isArray(g))g=g.join(S),g&&(g=this.extendTranslation(g,e,i,r));else{let j=!1,w=!1;!this.isValidLookup(g)&&P&&(j=!0,g=U),this.isValidLookup(g)||(w=!0,g=s);let _=(i.missingKeyNoValueFallbackToKey||this.options.missingKeyNoValueFallbackToKey)&&w?void 0:g,K=P&&U!==g&&this.options.updateMissing;if(w||j||K){if(this.logger.log(K?"updateKey":"missingKey",c,d,s,K?U:g),a){let v=this.resolve(s,{...i,keySeparator:!1});v&&v.res&&this.logger.warn("Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.")}let ue=[],Ne=this.languageUtils.getFallbackCodes(this.options.fallbackLng,i.lng||this.language);if(this.options.saveMissingTo==="fallback"&&Ne&&Ne[0])for(let v=0;v<Ne.length;v++)ue.push(Ne[v]);else this.options.saveMissingTo==="all"?ue=this.languageUtils.toResolveHierarchy(i.lng||this.language):ue.push(i.lng||this.language);let ht=(v,Y,he)=>{let mt=P&&he!==g?he:_;this.options.missingKeyHandler?this.options.missingKeyHandler(v,d,Y,mt,K,i):this.backendConnector?.saveMissing&&this.backendConnector.saveMissing(v,d,Y,mt,K,i),this.emit("missingKey",v,d,Y,g)};this.options.saveMissing&&(this.options.saveMissingPlurals&&y?ue.forEach(v=>{let Y=this.pluralResolver.getSuffixes(v,i);lt&&i[`defaultValue${this.options.pluralSeparator}zero`]&&Y.indexOf(`${this.options.pluralSeparator}zero`)<0&&Y.push(`${this.options.pluralSeparator}zero`),Y.forEach(he=>{ht([v],s+he,i[`defaultValue${he}`]||U)})}):ht(ue,s,U))}g=this.extendTranslation(g,e,i,u,r),w&&g===s&&this.options.appendNamespaceToMissingKey&&(g=`${d}${p}${s}`),(w||j)&&this.options.parseMissingKeyHandler&&(g=this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey?`${d}${p}${s}`:s,j?g:void 0,i))}return o?(u.res=g,u.usedParams=this.getUsedParamsDetails(i),u):g}extendTranslation(e,t,r,i,o){if(this.i18nFormat?.parse)e=this.i18nFormat.parse(e,{...this.options.interpolation.defaultVariables,...r},r.lng||this.language||i.usedLng,i.usedNS,i.usedKey,{resolved:i});else if(!r.skipInterpolation){r.interpolation&&this.interpolator.init({...r,interpolation:{...this.options.interpolation,...r.interpolation}});let f=I(e)&&(r?.interpolation?.skipOnVariables!==void 0?r.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables),d;if(f){let c=e.match(this.interpolator.nestingRegexp);d=c&&c.length}let p=r.replace&&!I(r.replace)?r.replace:r;if(this.options.interpolation.defaultVariables&&(p={...this.options.interpolation.defaultVariables,...p}),e=this.interpolator.interpolate(e,p,r.lng||this.language||i.usedLng,r),f){let c=e.match(this.interpolator.nestingRegexp),m=c&&c.length;d<m&&(r.nest=!1)}!r.lng&&i&&i.res&&(r.lng=this.language||i.usedLng),r.nest!==!1&&(e=this.interpolator.nest(e,(...c)=>o?.[0]===c[0]&&!r.context?(this.logger.warn(`It seems you are nesting recursively key: ${c[0]} in key: ${t[0]}`),null):this.translate(...c,t),r)),r.interpolation&&this.interpolator.reset()}let a=r.postProcess||this.options.postProcess,s=I(a)?[a]:a;return e!=null&&s?.length&&r.applyPostProcessor!==!1&&(e=Rt.handle(s,e,t,this.options&&this.options.postProcessPassResolved?{i18nResolved:{...i,usedParams:this.getUsedParamsDetails(r)},...r}:r,this)),e}resolve(e,t={}){let r,i,o,a,s;return I(e)&&(e=[e]),e.forEach(f=>{if(this.isValidLookup(r))return;let d=this.extractFromKey(f,t),p=d.key;i=p;let c=d.namespaces;this.options.fallbackNS&&(c=c.concat(this.options.fallbackNS));let m=t.count!==void 0&&!I(t.count),u=m&&!t.ordinal&&t.count===0,g=t.context!==void 0&&(I(t.context)||typeof t.context=="number")&&t.context!=="",C=t.lngs?t.lngs:this.languageUtils.toResolveHierarchy(t.lng||this.language,t.fallbackLng);c.forEach(b=>{this.isValidLookup(r)||(s=b,!Nt[`${C[0]}-${b}`]&&this.utils?.hasLoadedNamespace&&!this.utils?.hasLoadedNamespace(s)&&(Nt[`${C[0]}-${b}`]=!0,this.logger.warn(`key "${i}" for languages "${C.join(", ")}" won't get resolved as namespace "${s}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!")),C.forEach(D=>{if(this.isValidLookup(r))return;a=D;let S=[p];if(this.i18nFormat?.addLookupKeys)this.i18nFormat.addLookupKeys(S,p,D,b,t);else{let y;m&&(y=this.pluralResolver.getSuffix(D,t.count,t));let P=`${this.options.pluralSeparator}zero`,Z=`${this.options.pluralSeparator}ordinal${this.options.pluralSeparator}`;if(m&&(t.ordinal&&y.indexOf(Z)===0&&S.push(p+y.replace(Z,this.options.pluralSeparator)),S.push(p+y),u&&S.push(p+P)),g){let Q=`${p}${this.options.contextSeparator||"_"}${t.context}`;S.push(Q),m&&(t.ordinal&&y.indexOf(Z)===0&&S.push(Q+y.replace(Z,this.options.pluralSeparator)),S.push(Q+y),u&&S.push(Q+P))}}let A;for(;A=S.pop();)this.isValidLookup(r)||(o=A,r=this.getResource(D,b,A,t))}))})}),{res:r,usedKey:i,exactUsedKey:o,usedLng:a,usedNS:s}}isValidLookup(e){return e!==void 0&&!(!this.options.returnNull&&e===null)&&!(!this.options.returnEmptyString&&e==="")}getResource(e,t,r,i={}){return this.i18nFormat?.getResource?this.i18nFormat.getResource(e,t,r,i):this.resourceStore.getResource(e,t,r,i)}getUsedParamsDetails(e={}){let t=["defaultValue","ordinal","context","replace","lng","lngs","fallbackLng","ns","keySeparator","nsSeparator","returnObjects","returnDetails","joinArrays","postProcess","interpolation"],r=e.replace&&!I(e.replace),i=r?e.replace:e;if(r&&typeof e.count<"u"&&(i.count=e.count),this.options.interpolation.defaultVariables&&(i={...this.options.interpolation.defaultVariables,...i}),!r){i={...i};for(let o of t)delete i[o]}return i}static hasDefaultValue(e){let t="defaultValue";for(let r in e)if(Object.prototype.hasOwnProperty.call(e,r)&&t===r.substring(0,t.length)&&e[r]!==void 0)return!0;return!1}},Pe=class{constructor(e){this.options=e,this.supportedLngs=this.options.supportedLngs||!1,this.logger=z.create("languageUtils")}getScriptPartFromCode(e){if(e=Ie(e),!e||e.indexOf("-")<0)return null;let t=e.split("-");return t.length===2||(t.pop(),t[t.length-1].toLowerCase()==="x")?null:this.formatLanguageCode(t.join("-"))}getLanguagePartFromCode(e){if(e=Ie(e),!e||e.indexOf("-")<0)return e;let t=e.split("-");return this.formatLanguageCode(t[0])}formatLanguageCode(e){if(I(e)&&e.indexOf("-")>-1){let t;try{t=Intl.getCanonicalLocales(e)[0]}catch{}return t&&this.options.lowerCaseLng&&(t=t.toLowerCase()),t||(this.options.lowerCaseLng?e.toLowerCase():e)}return this.options.cleanCode||this.options.lowerCaseLng?e.toLowerCase():e}isSupportedCode(e){return(this.options.load==="languageOnly"||this.options.nonExplicitSupportedLngs)&&(e=this.getLanguagePartFromCode(e)),!this.supportedLngs||!this.supportedLngs.length||this.supportedLngs.indexOf(e)>-1}getBestMatchFromCodes(e){if(!e)return null;let t;return e.forEach(r=>{if(t)return;let i=this.formatLanguageCode(r);(!this.options.supportedLngs||this.isSupportedCode(i))&&(t=i)}),!t&&this.options.supportedLngs&&e.forEach(r=>{if(t)return;let i=this.getScriptPartFromCode(r);if(this.isSupportedCode(i))return t=i;let o=this.getLanguagePartFromCode(r);if(this.isSupportedCode(o))return t=o;t=this.options.supportedLngs.find(a=>{if(a===o)return a;if(!(a.indexOf("-")<0&&o.indexOf("-")<0)&&(a.indexOf("-")>0&&o.indexOf("-")<0&&a.substring(0,a.indexOf("-"))===o||a.indexOf(o)===0&&o.length>1))return a})}),t||(t=this.getFallbackCodes(this.options.fallbackLng)[0]),t}getFallbackCodes(e,t){if(!e)return[];if(typeof e=="function"&&(e=e(t)),I(e)&&(e=[e]),Array.isArray(e))return e;if(!t)return e.default||[];let r=e[t];return r||(r=e[this.getScriptPartFromCode(t)]),r||(r=e[this.formatLanguageCode(t)]),r||(r=e[this.getLanguagePartFromCode(t)]),r||(r=e.default),r||[]}toResolveHierarchy(e,t){let r=this.getFallbackCodes((t===!1?[]:t)||this.options.fallbackLng||[],e),i=[],o=a=>{a&&(this.isSupportedCode(a)?i.push(a):this.logger.warn(`rejecting language code not found in supportedLngs: ${a}`))};return I(e)&&(e.indexOf("-")>-1||e.indexOf("_")>-1)?(this.options.load!=="languageOnly"&&o(this.formatLanguageCode(e)),this.options.load!=="languageOnly"&&this.options.load!=="currentOnly"&&o(this.getScriptPartFromCode(e)),this.options.load!=="currentOnly"&&o(this.getLanguagePartFromCode(e))):I(e)&&o(this.formatLanguageCode(e)),r.forEach(a=>{i.indexOf(a)<0&&o(this.formatLanguageCode(a))}),i}},xt={zero:0,one:1,two:2,few:3,many:4,other:5},Ct={select:n=>n===1?"one":"other",resolvedOptions:()=>({pluralCategories:["one","other"]})},Ye=class{constructor(e,t={}){this.languageUtils=e,this.options=t,this.logger=z.create("pluralResolver"),this.pluralRulesCache={}}clearCache(){this.pluralRulesCache={}}getRule(e,t={}){let r=Ie(e==="dev"?"en":e),i=t.ordinal?"ordinal":"cardinal",o=JSON.stringify({cleanedCode:r,type:i});if(o in this.pluralRulesCache)return this.pluralRulesCache[o];let a;try{a=new Intl.PluralRules(r,{type:i})}catch{if(!Intl)return this.logger.error("No Intl support, please use an Intl polyfill!"),Ct;if(!e.match(/-|_/))return Ct;let f=this.languageUtils.getLanguagePartFromCode(e);a=this.getRule(f,t)}return this.pluralRulesCache[o]=a,a}needsPlural(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?.resolvedOptions().pluralCategories.length>1}getPluralFormsOfKey(e,t,r={}){return this.getSuffixes(e,r).map(i=>`${t}${i}`)}getSuffixes(e,t={}){let r=this.getRule(e,t);return r||(r=this.getRule("dev",t)),r?r.resolvedOptions().pluralCategories.sort((i,o)=>xt[i]-xt[o]).map(i=>`${this.options.prepend}${t.ordinal?`ordinal${this.options.prepend}`:""}${i}`):[]}getSuffix(e,t,r={}){let i=this.getRule(e,r);return i?`${this.options.prepend}${r.ordinal?`ordinal${this.options.prepend}`:""}${i.select(t)}`:(this.logger.warn(`no plural rule found for: ${e}`),this.getSuffix("dev",t,r))}},St=(n,e,t,r=".",i=!0)=>{let o=cr(n,e,t);return!o&&i&&I(t)&&(o=Ue(n,t,r),o===void 0&&(o=Ue(e,t,r))),o},Me=n=>n.replace(/\$/g,"$$$$"),be=class{constructor(e={}){this.logger=z.create("interpolator"),this.options=e,this.format=e?.interpolation?.format||(t=>t),this.init(e)}init(e={}){e.interpolation||(e.interpolation={escapeValue:!0});let{escape:t,escapeValue:r,useRawValueToEscape:i,prefix:o,prefixEscaped:a,suffix:s,suffixEscaped:f,formatSeparator:d,unescapeSuffix:p,unescapePrefix:c,nestingPrefix:m,nestingPrefixEscaped:u,nestingSuffix:g,nestingSuffixEscaped:C,nestingOptionsSeparator:b,maxReplaces:D,alwaysFormat:S}=e.interpolation;this.escape=t!==void 0?t:lr,this.escapeValue=r!==void 0?r:!0,this.useRawValueToEscape=i!==void 0?i:!1,this.prefix=o?ee(o):a||"{{",this.suffix=s?ee(s):f||"}}",this.formatSeparator=d||",",this.unescapePrefix=p?"":c||"-",this.unescapeSuffix=this.unescapePrefix?"":p||"",this.nestingPrefix=m?ee(m):u||ee("$t("),this.nestingSuffix=g?ee(g):C||ee(")"),this.nestingOptionsSeparator=b||",",this.maxReplaces=D||1e3,this.alwaysFormat=S!==void 0?S:!1,this.resetRegExp()}reset(){this.options&&this.init(this.options)}resetRegExp(){let e=(t,r)=>t?.source===r?(t.lastIndex=0,t):new RegExp(r,"g");this.regexp=e(this.regexp,`${this.prefix}(.+?)${this.suffix}`),this.regexpUnescape=e(this.regexpUnescape,`${this.prefix}${this.unescapePrefix}(.+?)${this.unescapeSuffix}${this.suffix}`),this.nestingRegexp=e(this.nestingRegexp,`${this.nestingPrefix}((?:[^()"']+|"[^"]*"|'[^']*'|\\((?:[^()]|"[^"]*"|'[^']*')*\\))*?)${this.nestingSuffix}`)}interpolate(e,t,r,i){let o,a,s,f=this.options&&this.options.interpolation&&this.options.interpolation.defaultVariables||{},d=u=>{if(u.indexOf(this.formatSeparator)<0){let D=St(t,f,u,this.options.keySeparator,this.options.ignoreJSONStructure);return this.alwaysFormat?this.format(D,void 0,r,{...i,...t,interpolationkey:u}):D}let g=u.split(this.formatSeparator),C=g.shift().trim(),b=g.join(this.formatSeparator).trim();return this.format(St(t,f,C,this.options.keySeparator,this.options.ignoreJSONStructure),b,r,{...i,...t,interpolationkey:C})};this.resetRegExp();let p=i?.missingInterpolationHandler||this.options.missingInterpolationHandler,c=i?.interpolation?.skipOnVariables!==void 0?i.interpolation.skipOnVariables:this.options.interpolation.skipOnVariables;return[{regex:this.regexpUnescape,safeValue:u=>Me(u)},{regex:this.regexp,safeValue:u=>this.escapeValue?Me(this.escape(u)):Me(u)}].forEach(u=>{for(s=0;o=u.regex.exec(e);){let g=o[1].trim();if(a=d(g),a===void 0)if(typeof p=="function"){let b=p(e,o,i);a=I(b)?b:""}else if(i&&Object.prototype.hasOwnProperty.call(i,g))a="";else if(c){a=o[0];continue}else this.logger.warn(`missed to pass in variable ${g} for interpolating ${e}`),a="";else!I(a)&&!this.useRawValueToEscape&&(a=gt(a));let C=u.safeValue(a);if(e=e.replace(o[0],C),c?(u.regex.lastIndex+=a.length,u.regex.lastIndex-=o[0].length):u.regex.lastIndex=0,s++,s>=this.maxReplaces)break}}),e}nest(e,t,r={}){let i,o,a,s=(f,d)=>{let p=this.nestingOptionsSeparator;if(f.indexOf(p)<0)return f;let c=f.split(new RegExp(`${p}[ ]*{`)),m=`{${c[1]}`;f=c[0],m=this.interpolate(m,a);let u=m.match(/'/g),g=m.match(/"/g);((u?.length??0)%2===0&&!g||g.length%2!==0)&&(m=m.replace(/'/g,'"'));try{a=JSON.parse(m),d&&(a={...d,...a})}catch(C){return this.logger.warn(`failed parsing options string in nesting for key ${f}`,C),`${f}${p}${m}`}return a.defaultValue&&a.defaultValue.indexOf(this.prefix)>-1&&delete a.defaultValue,f};for(;i=this.nestingRegexp.exec(e);){let f=[];a={...r},a=a.replace&&!I(a.replace)?a.replace:a,a.applyPostProcessor=!1,delete a.defaultValue;let d=/{.*}/.test(i[1])?i[1].lastIndexOf("}")+1:i[1].indexOf(this.formatSeparator);if(d!==-1&&(f=i[1].slice(d).split(this.formatSeparator).map(p=>p.trim()).filter(Boolean),i[1]=i[1].slice(0,d)),o=t(s.call(this,i[1].trim(),a),a),o&&i[0]===e&&!I(o))return o;I(o)||(o=gt(o)),o||(this.logger.warn(`missed to resolve ${i[1]} for nesting ${e}`),o=""),f.length&&(o=f.reduce((p,c)=>this.format(p,c,r.lng,{...r,interpolationkey:i[1].trim()}),o.trim())),e=e.replace(i[0],o),this.regexp.lastIndex=0}return e}},Tr=n=>{let e=n.toLowerCase().trim(),t={};if(n.indexOf("(")>-1){let r=n.split("(");e=r[0].toLowerCase().trim();let i=r[1].substring(0,r[1].length-1);e==="currency"&&i.indexOf(":")<0?t.currency||(t.currency=i.trim()):e==="relativetime"&&i.indexOf(":")<0?t.range||(t.range=i.trim()):i.split(";").forEach(a=>{if(a){let[s,...f]=a.split(":"),d=f.join(":").trim().replace(/^'+|'+$/g,""),p=s.trim();t[p]||(t[p]=d),d==="false"&&(t[p]=!1),d==="true"&&(t[p]=!0),isNaN(d)||(t[p]=parseInt(d,10))}})}return{formatName:e,formatOptions:t}},Gt=n=>{let e={};return(t,r,i)=>{let o=i;i&&i.interpolationkey&&i.formatParams&&i.formatParams[i.interpolationkey]&&i[i.interpolationkey]&&(o={...o,[i.interpolationkey]:void 0});let a=r+JSON.stringify(o),s=e[a];return s||(s=n(Ie(r),i),e[a]=s),s(t)}},yr=n=>(e,t,r)=>n(Ie(t),r)(e),Je=class{constructor(e={}){this.logger=z.create("formatter"),this.options=e,this.init(e)}init(e,t={interpolation:{}}){this.formatSeparator=t.interpolation.formatSeparator||",";let r=t.cacheInBuiltFormats?Gt:yr;this.formats={number:r((i,o)=>{let a=new Intl.NumberFormat(i,{...o});return s=>a.format(s)}),currency:r((i,o)=>{let a=new Intl.NumberFormat(i,{...o,style:"currency"});return s=>a.format(s)}),datetime:r((i,o)=>{let a=new Intl.DateTimeFormat(i,{...o});return s=>a.format(s)}),relativetime:r((i,o)=>{let a=new Intl.RelativeTimeFormat(i,{...o});return s=>a.format(s,o.range||"day")}),list:r((i,o)=>{let a=new Intl.ListFormat(i,{...o});return s=>a.format(s)})}}add(e,t){this.formats[e.toLowerCase().trim()]=t}addCached(e,t){this.formats[e.toLowerCase().trim()]=Gt(t)}format(e,t,r,i={}){let o=t.split(this.formatSeparator);if(o.length>1&&o[0].indexOf("(")>1&&o[0].indexOf(")")<0&&o.find(s=>s.indexOf(")")>-1)){let s=o.findIndex(f=>f.indexOf(")")>-1);o[0]=[o[0],...o.splice(1,s)].join(this.formatSeparator)}return o.reduce((s,f)=>{let{formatName:d,formatOptions:p}=Tr(f);if(this.formats[d]){let c=s;try{let m=i?.formatParams?.[i.interpolationkey]||{},u=m.locale||m.lng||i.locale||i.lng||r;c=this.formats[d](s,u,{...p,...i,...m})}catch(m){this.logger.warn(m)}return c}else this.logger.warn(`there was no format function for ${d}`);return s},e)}},Nr=(n,e)=>{n.pending[e]!==void 0&&(delete n.pending[e],n.pendingCount--)},Xe=class extends te{constructor(e,t,r,i={}){super(),this.backend=e,this.store=t,this.services=r,this.languageUtils=r.languageUtils,this.options=i,this.logger=z.create("backendConnector"),this.waitingReads=[],this.maxParallelReads=i.maxParallelReads||10,this.readingCalls=0,this.maxRetries=i.maxRetries>=0?i.maxRetries:5,this.retryTimeout=i.retryTimeout>=1?i.retryTimeout:350,this.state={},this.queue=[],this.backend?.init?.(r,i.backend,i)}queueLoad(e,t,r,i){let o={},a={},s={},f={};return e.forEach(d=>{let p=!0;t.forEach(c=>{let m=`${d}|${c}`;!r.reload&&this.store.hasResourceBundle(d,c)?this.state[m]=2:this.state[m]<0||(this.state[m]===1?a[m]===void 0&&(a[m]=!0):(this.state[m]=1,p=!1,a[m]===void 0&&(a[m]=!0),o[m]===void 0&&(o[m]=!0),f[c]===void 0&&(f[c]=!0)))}),p||(s[d]=!0)}),(Object.keys(o).length||Object.keys(a).length)&&this.queue.push({pending:a,pendingCount:Object.keys(a).length,loaded:{},errors:[],callback:i}),{toLoad:Object.keys(o),pending:Object.keys(a),toLoadLanguages:Object.keys(s),toLoadNamespaces:Object.keys(f)}}loaded(e,t,r){let i=e.split("|"),o=i[0],a=i[1];t&&this.emit("failedLoading",o,a,t),!t&&r&&this.store.addResourceBundle(o,a,r,void 0,void 0,{skipCopy:!0}),this.state[e]=t?-1:2,t&&r&&(this.state[e]=0);let s={};this.queue.forEach(f=>{dr(f.loaded,[o],a),Nr(f,e),t&&f.errors.push(t),f.pendingCount===0&&!f.done&&(Object.keys(f.loaded).forEach(d=>{s[d]||(s[d]={});let p=f.loaded[d];p.length&&p.forEach(c=>{s[d][c]===void 0&&(s[d][c]=!0)})}),f.done=!0,f.errors.length?f.callback(f.errors):f.callback())}),this.emit("loaded",s),this.queue=this.queue.filter(f=>!f.done)}read(e,t,r,i=0,o=this.retryTimeout,a){if(!e.length)return a(null,{});if(this.readingCalls>=this.maxParallelReads){this.waitingReads.push({lng:e,ns:t,fcName:r,tried:i,wait:o,callback:a});return}this.readingCalls++;let s=(d,p)=>{if(this.readingCalls--,this.waitingReads.length>0){let c=this.waitingReads.shift();this.read(c.lng,c.ns,c.fcName,c.tried,c.wait,c.callback)}if(d&&p&&i<this.maxRetries){setTimeout(()=>{this.read.call(this,e,t,r,i+1,o*2,a)},o);return}a(d,p)},f=this.backend[r].bind(this.backend);if(f.length===2){try{let d=f(e,t);d&&typeof d.then=="function"?d.then(p=>s(null,p)).catch(s):s(null,d)}catch(d){s(d)}return}return f(e,t,s)}prepareLoading(e,t,r={},i){if(!this.backend)return this.logger.warn("No backend was added via i18next.use. Will not load resources."),i&&i();I(e)&&(e=this.languageUtils.toResolveHierarchy(e)),I(t)&&(t=[t]);let o=this.queueLoad(e,t,r,i);if(!o.toLoad.length)return o.pending.length||i(),null;o.toLoad.forEach(a=>{this.loadOne(a)})}load(e,t,r){this.prepareLoading(e,t,{},r)}reload(e,t,r){this.prepareLoading(e,t,{reload:!0},r)}loadOne(e,t=""){let r=e.split("|"),i=r[0],o=r[1];this.read(i,o,"read",void 0,void 0,(a,s)=>{a&&this.logger.warn(`${t}loading namespace ${o} for language ${i} failed`,a),!a&&s&&this.logger.log(`${t}loaded namespace ${o} for language ${i}`,s),this.loaded(e,a,s)})}saveMissing(e,t,r,i,o,a={},s=()=>{}){if(this.services?.utils?.hasLoadedNamespace&&!this.services?.utils?.hasLoadedNamespace(t)){this.logger.warn(`did not save key "${r}" as the namespace "${t}" was not yet loaded`,"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!");return}if(!(r==null||r==="")){if(this.backend?.create){let f={...a,isUpdate:o},d=this.backend.create.bind(this.backend);if(d.length<6)try{let p;d.length===5?p=d(e,t,r,i,f):p=d(e,t,r,i),p&&typeof p.then=="function"?p.then(c=>s(null,c)).catch(s):s(null,p)}catch(p){s(p)}else d(e,t,r,i,s,f)}!e||!e[0]||this.store.addResource(e[0],t,r,i)}}},Ke=()=>({debug:!1,initAsync:!0,ns:["translation"],defaultNS:["translation"],fallbackLng:["dev"],fallbackNS:!1,supportedLngs:!1,nonExplicitSupportedLngs:!1,load:"all",preload:!1,simplifyPluralSuffix:!0,keySeparator:".",nsSeparator:":",pluralSeparator:"_",contextSeparator:"_",partialBundledLanguages:!1,saveMissing:!1,updateMissing:!1,saveMissingTo:"fallback",saveMissingPlurals:!0,missingKeyHandler:!1,missingInterpolationHandler:!1,postProcess:!1,postProcessPassResolved:!1,returnNull:!1,returnEmptyString:!0,returnObjects:!1,joinArrays:!1,returnedObjectHandler:!1,parseMissingKeyHandler:!1,appendNamespaceToMissingKey:!1,appendNamespaceToCIMode:!1,overloadTranslationOptionHandler:n=>{let e={};if(typeof n[1]=="object"&&(e=n[1]),I(n[1])&&(e.defaultValue=n[1]),I(n[2])&&(e.tDescription=n[2]),typeof n[2]=="object"||typeof n[3]=="object"){let t=n[3]||n[2];Object.keys(t).forEach(r=>{e[r]=t[r]})}return e},interpolation:{escapeValue:!0,format:n=>n,prefix:"{{",suffix:"}}",formatSeparator:",",unescapePrefix:"-",nestingPrefix:"$t(",nestingSuffix:")",nestingOptionsSeparator:",",maxReplaces:1e3,skipOnVariables:!0},cacheInBuiltFormats:!0}),Pt=n=>(I(n.ns)&&(n.ns=[n.ns]),I(n.fallbackLng)&&(n.fallbackLng=[n.fallbackLng]),I(n.fallbackNS)&&(n.fallbackNS=[n.fallbackNS]),n.supportedLngs?.indexOf?.("cimode")<0&&(n.supportedLngs=n.supportedLngs.concat(["cimode"])),typeof n.initImmediate=="boolean"&&(n.initAsync=n.initImmediate),n),xe=()=>{},xr=n=>{Object.getOwnPropertyNames(Object.getPrototypeOf(n)).forEach(t=>{typeof n[t]=="function"&&(n[t]=n[t].bind(n))})},qe=class n extends te{constructor(e={},t){if(super(),this.options=Pt(e),this.services={},this.logger=z,this.modules={external:[]},xr(this),t&&!this.isInitialized&&!e.isClone){if(!this.options.initAsync)return this.init(e,t),this;setTimeout(()=>{this.init(e,t)},0)}}init(e={},t){this.isInitializing=!0,typeof e=="function"&&(t=e,e={}),e.defaultNS==null&&e.ns&&(I(e.ns)?e.defaultNS=e.ns:e.ns.indexOf("translation")<0&&(e.defaultNS=e.ns[0]));let r=Ke();this.options={...r,...this.options,...Pt(e)},this.options.interpolation={...r.interpolation,...this.options.interpolation},e.keySeparator!==void 0&&(this.options.userDefinedKeySeparator=e.keySeparator),e.nsSeparator!==void 0&&(this.options.userDefinedNsSeparator=e.nsSeparator),typeof this.options.overloadTranslationOptionHandler!="function"&&(this.options.overloadTranslationOptionHandler=r.overloadTranslationOptionHandler),this.options.debug===!0&&typeof console<"u"&&console.warn("i18next is maintained with support from locize.com \u2014 consider powering your project with managed localization (AI, CDN, integrations): https://locize.com");let i=d=>d?typeof d=="function"?new d:d:null;if(!this.options.isClone){this.modules.logger?z.init(i(this.modules.logger),this.options):z.init(null,this.options);let d;this.modules.formatter?d=this.modules.formatter:d=Je;let p=new Pe(this.options);this.store=new Se(this.options.resources,this.options);let c=this.services;c.logger=z,c.resourceStore=this.store,c.languageUtils=p,c.pluralResolver=new Ye(p,{prepend:this.options.pluralSeparator,simplifyPluralSuffix:this.options.simplifyPluralSuffix}),this.options.interpolation.format&&this.options.interpolation.format!==r.interpolation.format&&this.logger.deprecate("init: you are still using the legacy format function, please use the new approach: https://www.i18next.com/translation-function/formatting"),d&&(!this.options.interpolation.format||this.options.interpolation.format===r.interpolation.format)&&(c.formatter=i(d),c.formatter.init&&c.formatter.init(c,this.options),this.options.interpolation.format=c.formatter.format.bind(c.formatter)),c.interpolator=new be(this.options),c.utils={hasLoadedNamespace:this.hasLoadedNamespace.bind(this)},c.backendConnector=new Xe(i(this.modules.backend),c.resourceStore,c,this.options),c.backendConnector.on("*",(u,...g)=>{this.emit(u,...g)}),this.modules.languageDetector&&(c.languageDetector=i(this.modules.languageDetector),c.languageDetector.init&&c.languageDetector.init(c,this.options.detection,this.options)),this.modules.i18nFormat&&(c.i18nFormat=i(this.modules.i18nFormat),c.i18nFormat.init&&c.i18nFormat.init(this)),this.translator=new Ge(this.services,this.options),this.translator.on("*",(u,...g)=>{this.emit(u,...g)}),this.modules.external.forEach(u=>{u.init&&u.init(this)})}if(this.format=this.options.interpolation.format,t||(t=xe),this.options.fallbackLng&&!this.services.languageDetector&&!this.options.lng){let d=this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);d.length>0&&d[0]!=="dev"&&(this.options.lng=d[0])}!this.services.languageDetector&&!this.options.lng&&this.logger.warn("init: no languageDetector is used and no lng is defined"),["getResource","hasResourceBundle","getResourceBundle","getDataByLanguage"].forEach(d=>{this[d]=(...p)=>this.store[d](...p)}),["addResource","addResources","addResourceBundle","removeResourceBundle"].forEach(d=>{this[d]=(...p)=>(this.store[d](...p),this)});let s=me(),f=()=>{let d=(p,c)=>{this.isInitializing=!1,this.isInitialized&&!this.initializedStoreOnce&&this.logger.warn("init: i18next is already initialized. You should call init just once!"),this.isInitialized=!0,this.options.isClone||this.logger.log("initialized",this.options),this.emit("initialized",this.options),s.resolve(c),t(p,c)};if(this.languages&&!this.isInitialized)return d(null,this.t.bind(this));this.changeLanguage(this.options.lng,d)};return this.options.resources||!this.options.initAsync?f():setTimeout(f,0),s}loadResources(e,t=xe){let r=t,i=I(e)?e:this.language;if(typeof e=="function"&&(r=e),!this.options.resources||this.options.partialBundledLanguages){if(i?.toLowerCase()==="cimode"&&(!this.options.preload||this.options.preload.length===0))return r();let o=[],a=s=>{if(!s||s==="cimode")return;this.services.languageUtils.toResolveHierarchy(s).forEach(d=>{d!=="cimode"&&o.indexOf(d)<0&&o.push(d)})};i?a(i):this.services.languageUtils.getFallbackCodes(this.options.fallbackLng).forEach(f=>a(f)),this.options.preload?.forEach?.(s=>a(s)),this.services.backendConnector.load(o,this.options.ns,s=>{!s&&!this.resolvedLanguage&&this.language&&this.setResolvedLanguage(this.language),r(s)})}else r(null)}reloadResources(e,t,r){let i=me();return typeof e=="function"&&(r=e,e=void 0),typeof t=="function"&&(r=t,t=void 0),e||(e=this.languages),t||(t=this.options.ns),r||(r=xe),this.services.backendConnector.reload(e,t,o=>{i.resolve(),r(o)}),i}use(e){if(!e)throw new Error("You are passing an undefined module! Please check the object you are passing to i18next.use()");if(!e.type)throw new Error("You are passing a wrong module! Please check the object you are passing to i18next.use()");return e.type==="backend"&&(this.modules.backend=e),(e.type==="logger"||e.log&&e.warn&&e.error)&&(this.modules.logger=e),e.type==="languageDetector"&&(this.modules.languageDetector=e),e.type==="i18nFormat"&&(this.modules.i18nFormat=e),e.type==="postProcessor"&&Rt.addPostProcessor(e),e.type==="formatter"&&(this.modules.formatter=e),e.type==="3rdParty"&&this.modules.external.push(e),this}setResolvedLanguage(e){if(!(!e||!this.languages)&&!(["cimode","dev"].indexOf(e)>-1)){for(let t=0;t<this.languages.length;t++){let r=this.languages[t];if(!(["cimode","dev"].indexOf(r)>-1)&&this.store.hasLanguageSomeTranslations(r)){this.resolvedLanguage=r;break}}!this.resolvedLanguage&&this.languages.indexOf(e)<0&&this.store.hasLanguageSomeTranslations(e)&&(this.resolvedLanguage=e,this.languages.unshift(e))}}changeLanguage(e,t){this.isLanguageChangingTo=e;let r=me();this.emit("languageChanging",e);let i=s=>{this.language=s,this.languages=this.services.languageUtils.toResolveHierarchy(s),this.resolvedLanguage=void 0,this.setResolvedLanguage(s)},o=(s,f)=>{f?this.isLanguageChangingTo===e&&(i(f),this.translator.changeLanguage(f),this.isLanguageChangingTo=void 0,this.emit("languageChanged",f),this.logger.log("languageChanged",f)):this.isLanguageChangingTo=void 0,r.resolve((...d)=>this.t(...d)),t&&t(s,(...d)=>this.t(...d))},a=s=>{!e&&!s&&this.services.languageDetector&&(s=[]);let f=I(s)?s:s&&s[0],d=this.store.hasLanguageSomeTranslations(f)?f:this.services.languageUtils.getBestMatchFromCodes(I(s)?[s]:s);d&&(this.language||i(d),this.translator.language||this.translator.changeLanguage(d),this.services.languageDetector?.cacheUserLanguage?.(d)),this.loadResources(d,p=>{o(p,d)})};return!e&&this.services.languageDetector&&!this.services.languageDetector.async?a(this.services.languageDetector.detect()):!e&&this.services.languageDetector&&this.services.languageDetector.async?this.services.languageDetector.detect.length===0?this.services.languageDetector.detect().then(a):this.services.languageDetector.detect(a):a(e),r}getFixedT(e,t,r){let i=(o,a,...s)=>{let f;typeof a!="object"?f=this.options.overloadTranslationOptionHandler([o,a].concat(s)):f={...a},f.lng=f.lng||i.lng,f.lngs=f.lngs||i.lngs,f.ns=f.ns||i.ns,f.keyPrefix!==""&&(f.keyPrefix=f.keyPrefix||r||i.keyPrefix);let d=this.options.keySeparator||".",p;return f.keyPrefix&&Array.isArray(o)?p=o.map(c=>(typeof c=="function"&&(c=We(c,{...this.options,...a})),`${f.keyPrefix}${d}${c}`)):(typeof o=="function"&&(o=We(o,{...this.options,...a})),p=f.keyPrefix?`${f.keyPrefix}${d}${o}`:o),this.t(p,f)};return I(e)?i.lng=e:i.lngs=e,i.ns=t,i.keyPrefix=r,i}t(...e){return this.translator?.translate(...e)}exists(...e){return this.translator?.exists(...e)}setDefaultNamespace(e){this.options.defaultNS=e}hasLoadedNamespace(e,t={}){if(!this.isInitialized)return this.logger.warn("hasLoadedNamespace: i18next was not initialized",this.languages),!1;if(!this.languages||!this.languages.length)return this.logger.warn("hasLoadedNamespace: i18n.languages were undefined or empty",this.languages),!1;let r=t.lng||this.resolvedLanguage||this.languages[0],i=this.options?this.options.fallbackLng:!1,o=this.languages[this.languages.length-1];if(r.toLowerCase()==="cimode")return!0;let a=(s,f)=>{let d=this.services.backendConnector.state[`${s}|${f}`];return d===-1||d===0||d===2};if(t.precheck){let s=t.precheck(this,a);if(s!==void 0)return s}return!!(this.hasResourceBundle(r,e)||!this.services.backendConnector.backend||this.options.resources&&!this.options.partialBundledLanguages||a(r,e)&&(!i||a(o,e)))}loadNamespaces(e,t){let r=me();return this.options.ns?(I(e)&&(e=[e]),e.forEach(i=>{this.options.ns.indexOf(i)<0&&this.options.ns.push(i)}),this.loadResources(i=>{r.resolve(),t&&t(i)}),r):(t&&t(),Promise.resolve())}loadLanguages(e,t){let r=me();I(e)&&(e=[e]);let i=this.options.preload||[],o=e.filter(a=>i.indexOf(a)<0&&this.services.languageUtils.isSupportedCode(a));return o.length?(this.options.preload=i.concat(o),this.loadResources(a=>{r.resolve(),t&&t(a)}),r):(t&&t(),Promise.resolve())}dir(e){if(e||(e=this.resolvedLanguage||(this.languages?.length>0?this.languages[0]:this.language)),!e)return"rtl";try{let i=new Intl.Locale(e);if(i&&i.getTextInfo){let o=i.getTextInfo();if(o&&o.direction)return o.direction}}catch{}let t=["ar","shu","sqr","ssh","xaa","yhd","yud","aao","abh","abv","acm","acq","acw","acx","acy","adf","ads","aeb","aec","afb","ajp","apc","apd","arb","arq","ars","ary","arz","auz","avl","ayh","ayl","ayn","ayp","bbz","pga","he","iw","ps","pbt","pbu","pst","prp","prd","ug","ur","ydd","yds","yih","ji","yi","hbo","men","xmn","fa","jpr","peo","pes","prs","dv","sam","ckb"],r=this.services?.languageUtils||new Pe(Ke());return e.toLowerCase().indexOf("-latn")>1?"ltr":t.indexOf(r.getLanguagePartFromCode(e))>-1||e.toLowerCase().indexOf("-arab")>1?"rtl":"ltr"}static createInstance(e={},t){let r=new n(e,t);return r.createInstance=n.createInstance,r}cloneInstance(e={},t=xe){let r=e.forkResourceStore;r&&delete e.forkResourceStore;let i={...this.options,...e,isClone:!0},o=new n(i);if((e.debug!==void 0||e.prefix!==void 0)&&(o.logger=o.logger.clone(e)),["store","services","language"].forEach(s=>{o[s]=this[s]}),o.services={...this.services},o.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},r){let s=Object.keys(this.store.data).reduce((f,d)=>(f[d]={...this.store.data[d]},f[d]=Object.keys(f[d]).reduce((p,c)=>(p[c]={...f[d][c]},p),f[d]),f),{});o.store=new Se(s,i),o.services.resourceStore=o.store}if(e.interpolation){let f={...Ke().interpolation,...this.options.interpolation,...e.interpolation},d={...i,interpolation:f};o.services.interpolator=new be(d)}return o.translator=new Ge(o.services,i),o.translator.on("*",(s,...f)=>{o.emit(s,...f)}),o.init(i,t),o.translator.options=i,o.translator.backendConnector.services.utils={hasLoadedNamespace:o.hasLoadedNamespace.bind(o)},o}toJSON(){return{options:this.options,store:this.store,language:this.language,languages:this.languages,resolvedLanguage:this.resolvedLanguage}}},R=qe.createInstance(),Li=R.createInstance,Ei=R.dir,Di=R.init,Ai=R.loadResources,vi=R.reloadResources,Oi=R.use,Vi=R.changeLanguage,wi=R.getFixedT,ki=R.t,$i=R.exists,ji=R.setDefaultNamespace,_i=R.hasLoadedNamespace,zi=R.loadNamespaces,Fi=R.loadLanguages;var Et={AI64CharacterSetValidator:{lengthMustBeMultipleOf4:"Length {{length, number}} must be a multiple of 4"},Check:{lengthOfStringForPriceOrWeightMustBeExactly:"Length {{length, number}} of string for price or weight must be 4 or 5",priceOrWeightComponent:"price or weight",lengthOfStringForCheckCharacterPairMustBeLessThanOrEqualTo:"Length {{length, number}} of string for check character pair must be less than or equal to {{maximumLength, number}}"},Identifier:{identifierTypeLength:"{{identifierType}} must be {{length, number}} digits long",invalidCheckDigit:"Invalid check digit",invalidGTINLength:"GTIN must be 13, 12, 8, or 14 digits long",invalidGTIN14Length:"GTIN must be 14 digits long",invalidZeroSuppressedGTIN12:"Invalid zero-suppressed GTIN-12",invalidZeroSuppressibleGTIN12:"GTIN-12 not zero-suppressible",invalidZeroSuppressedGTIN12AsGTIN13:"Invalid zero-suppressed GTIN-12 as GTIN-13",invalidZeroSuppressedGTIN12AsGTIN14:"Invalid zero-suppressed GTIN-12 as GTIN-14",invalidGTINAtRetail:"GTIN not supported at retail consumer trade item level",invalidGTINAtOtherThanRetail:"GTIN not supported at other than retail consumer trade item level",invalidRCNLength:"RCN length must match format length",invalidVariableMeasureRCNFormat:"Invalid variable measure RCN format",invalidVariableMeasureRCNPrefix:"Invalid variable measure RCN prefix",invalidVariableMeasurePriceOrWeight:"Invalid variable measure price or weight",indicatorDigit:"indicator digit",serialComponent:"serial component",reference:"reference",referenceCantBeAllNumeric:"Reference can't be all-numeric",invalidCheckCharacterPair:"Invalid check character pair"},Prefix:{gs1CompanyPrefix:"GS1 Company Prefix",upcCompanyPrefix:"U.P.C. Company Prefix",gs18Prefix:"GS1-8 Prefix",gs1CompanyPrefixCantStartWith0:`GS1 Company Prefix can't start with "0"`,gs1CompanyPrefixCantStartWith00000:`GS1 Company Prefix can't start with "00000"`,gs1CompanyPrefixCantStartWith000000:`GS1 Company Prefix can't start with "000000"`,upcCompanyPrefixCantStartWith0000:`U.P.C. Company Prefix can't start with "0000"`,gs18PrefixCantStartWith0:`GS1-8 Prefix can't start with "0"`,identifierTypeNotSupportedByGS18Prefix:"{{identifierType}} not supported by GS1-8 Prefix"},GCPLength:{gs1CompanyPrefixLengthDataFileNotFound:'GS1 Company Prefix length data "{{key}}" not found',gs1CompanyPrefixLengthDataNotLoaded:"GS1 Company Prefix length data not loaded"}};var Dt={AI64CharacterSetValidator:{lengthMustBeMultipleOf4:"La longueur {{length, number}} doit \xEAtre un multiple de 4"},Check:{lengthOfStringForPriceOrWeightMustBeExactly:"La longueur {{length, number}} de la cha\xEEne pour le prix ou le poids doit \xEAtre 4 ou 5",priceOrWeightComponent:"prix ou poids",lengthOfStringForCheckCharacterPairMustBeLessThanOrEqualTo:"La longueur {{length, number}} de la cha\xEEne pour la paire de caract\xE8res de v\xE9rification doit \xEAtre inf\xE9rieure ou \xE9gale \xE0 {{maximumLength, number}}"},Identifier:{identifierTypeLength:"{{identifierType}} doit comporter {{length, number}} chiffres",invalidCheckDigit:"Chiffre de contr\xF4le non valide",invalidGTINLength:"Le GTIN doit comporter 13, 12, 8 ou 14 chiffres",invalidGTIN14Length:"Le GTIN doit comporter 14 chiffres",invalidZeroSuppressedGTIN12:"Code GTIN-12 non valide avec z\xE9ro supprim\xE9",invalidZeroSuppressibleGTIN12:"Le GTIN-12 ne peut pas \xEAtre supprim\xE9 par z\xE9ro",invalidZeroSuppressedGTIN12AsGTIN13:"GTIN-12 non valide avec z\xE9ro supprim\xE9 en tant que GTIN-13",invalidZeroSuppressedGTIN12AsGTIN14:"GTIN-12 non valide avec z\xE9ro supprim\xE9 en tant que GTIN-14",invalidGTINAtRetail:"Le GTIN n'est pas pris en charge au niveau des articles de consommation au d\xE9tail",invalidGTINAtOtherThanRetail:"Le GTIN n'est pas pris en charge \xE0 d'autres niveaux que ceux des articles de consommation au d\xE9tail",invalidRCNLength:"La longueur du RCN doit correspondre \xE0 la longueur du format",invalidVariableMeasureRCNFormat:"Format RCN de mesure variable non valide",invalidVariableMeasureRCNPrefix:"Pr\xE9fixe RCN de mesure variable non valide",invalidVariableMeasurePriceOrWeight:"Mesure variable invalide : prix ou poids",indicatorDigit:"chiffre indicateur",serialComponent:"composant s\xE9rie",reference:"r\xE9f\xE9rence",referenceCantBeAllNumeric:"La r\xE9f\xE9rence ne peut pas \xEAtre enti\xE8rement num\xE9rique",invalidCheckCharacterPair:"Paire de caract\xE8res de contr\xF4le non valide"},Prefix:{gs1CompanyPrefix:"Pr\xE9fixe de l'entreprise GS1",upcCompanyPrefix:"Pr\xE9fixe de l'entreprise U.P.C.",gs18Prefix:"Pr\xE9fixe GS1-8",gs1CompanyPrefixCantStartWith0:`Le pr\xE9fixe de l'entreprise GS1 ne peut pas commencer par "0"`,gs1CompanyPrefixCantStartWith00000:`Le pr\xE9fixe de l'entreprise GS1 ne peut pas commencer par "00000"`,gs1CompanyPrefixCantStartWith000000:`Le pr\xE9fixe de l'entreprise GS1 ne peut pas commencer par "000000"`,upcCompanyPrefixCantStartWith0000:`Le pr\xE9fixe de l'entreprise U.P.C. ne peut pas commencer par "0000"`,gs18PrefixCantStartWith0:'Le pr\xE9fixe GS1-8 ne peut pas commencer par "0"',identifierTypeNotSupportedByGS18Prefix:"{{identifierType}} non pris en charge par le pr\xE9fixe GS1-8"},GCPLength:{gs1CompanyPrefixLengthDataFileNotFound:"Donn\xE9es de longueur du pr\xE9fixe d'entreprise GS1 \xAB{{key}}\xBB introuvables",gs1CompanyPrefixLengthDataNotLoaded:"Les donn\xE9es relatives \xE0 la longueur du pr\xE9fixe d'entreprise GS1 n'ont pas \xE9t\xE9 charg\xE9es"}};var Pr="aidct_gs1",br={en:{aidct_gs1:Et},fr:{aidct_gs1:Dt}},h=R.createInstance();async function Xi(n,e=!1){return Sr(h,n,e,Pr,br,Cr,Gr)}import{CharacterSetCreator as At,CharacterSetValidator as Rr,Exclusions as vt,utilityNS as Lr}from"@aidc-toolkit/utility";var Te=new At(["!",'"',"%","&","'","(",")","*","+",",","-",".","/","0","1","2","3","4","5","6","7","8","9",":",";","<","=",">","?","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"],vt.AllNumeric),en=Te,Qe=new At(["#","-","/","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],vt.AllNumeric),tn=Qe,Ze=class extends Rr{constructor(){super(["-","0","1","2","3","4","5","6","7","8","9","=","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","_","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"])}validate(e,t){super.validate(e,t);let r=e.length;if(r%4!==0)throw new RangeError(h.t("AI64CharacterSetValidator.lengthMustBeMultipleOf4",{length:r}));let i=e.search(/={1,2}/u);if(i!==-1&&i<r-2)throw new RangeError(h.t("CharacterSetValidator.invalidCharacterAtPosition",{ns:Lr,c:"=",position:i}))}},rn=new Ze;import{NUMERIC_CREATOR as ye,utilityNS as tt}from"@aidc-toolkit/utility";var $t=[0,3,6,9,12,15,18,21,24,27],Re=[0,2,4,6,8,9,1,3,5,7],Ot=[0,5,1,6,2,7,3,8,4,9],Vt=[0,5,9,4,8,3,7,2,6,1],Er=[0,9,7,5,3,1,8,6,4,2];function Le(n,e){let t=(e.length+Number(n))%2===0;return ye.characterIndexes(e).reduce((r,i,o)=>{if(i===void 0)throw new RangeError(h.t("CharacterSetValidator.invalidCharacterAtPosition",{ns:tt,c:e.charAt(o),position:o+1}));return t=!t,r+(t?$t[i]:i)},0)}function H(n){return ye.character(9-(Le(!1,n)+9)%10)}function re(n){return Le(!0,n)%10===0}function wt(n,e){return ye.characterIndexes(e).reduce((t,r,i)=>{if(r===void 0)throw new RangeError(h.t("CharacterSetValidator.invalidCharacterAtPositionOfComponent",{ns:tt,c:e.charAt(i),position:i+1,component:h.t("Check.priceOrWeightComponent")}));return t+n[i][r]},0)}function rt(n){let e;switch(n.length){case 4:e=ye.character(wt([Re,Re,$t,Vt],n)*3%10);break;case 5:e=ye.character(Er[9-(wt([Ot,Re,Vt,Ot,Re],n)+9)%10]);break;default:throw new RangeError(h.t("Check.lengthOfStringForPriceOrWeightMustBeExactly",{length:n.length}))}return e}function jt(n,e){return rt(n)===e}var et=[107,103,101,97,89,83,79,73,71,67,61,59,53,47,43,41,37,31,29,23,19,17,13,11,7,5,3,2],kt=["2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","J","K","L","M","N","P","Q","R","S","T","U","V","W","X","Y","Z"];function it(n){let e=et.length-n.length;if(e<0)throw new RangeError(h.t("Check.lengthOfStringForCheckCharacterPairMustBeLessThanOrEqualTo",{length:n.length,maximumLength:et.length}));let t=Te.characterIndexes(n).reduce((i,o,a)=>{if(o===void 0)throw new RangeError(h.t("CharacterSetValidator.invalidCharacterAtPosition",{ns:tt,c:n.charAt(a),position:a+1}));return i+o*et[e+a]},0)%1021,r=t%32;return kt[(t-r)/32]+kt[r]}function _t(n){let e=n.length-2;return it(n.substring(0,e))===n.substring(e)}var T={GS1CompanyPrefix:"GS1 Company Prefix",UPCCompanyPrefix:"U.P.C. Company Prefix",GS18Prefix:"GS1-8 Prefix"};import{NUMERIC_CREATOR as zt}from"@aidc-toolkit/utility";var Ft=4,Mt=12,nt=5,ot=11,at=2,st=7,Dr={minimumLength:Ft,maximumLength:Mt,component:()=>h.t("Prefix.gs1CompanyPrefix")},Ar={minimumLength:nt+1,maximumLength:ot+1,component:()=>h.t("Prefix.gs1CompanyPrefix")},vr={minimumLength:at+5,maximumLength:st+5,component:()=>h.t("Prefix.gs1CompanyPrefix")},Or={minimumLength:nt,maximumLength:ot,component:()=>h.t("Prefix.upcCompanyPrefix")},Vr={minimumLength:at,maximumLength:st,component:()=>h.t("Prefix.gs18Prefix")},W={GS1_COMPANY_PREFIX_MINIMUM_LENGTH:Ft,GS1_COMPANY_PREFIX_MAXIMUM_LENGTH:Mt,UPC_COMPANY_PREFIX_MINIMUM_LENGTH:nt,UPC_COMPANY_PREFIX_MAXIMUM_LENGTH:ot,GS1_8_PREFIX_MINIMUM_LENGTH:at,GS1_8_PREFIX_MAXIMUM_LENGTH:st,validate(n,e,t,r,i=!1,o=!1,a){let s;switch(n){case T.GS1CompanyPrefix:if(!r.startsWith("0"))s=Dr;else if(r.startsWith("00000")){if(r.startsWith("000000"))throw new RangeError(h.t(a??"Prefix.gs1CompanyPrefixCantStartWith000000"));if(!t)throw new RangeError(h.t(a??"Prefix.gs1CompanyPrefixCantStartWith00000"));s=vr}else{if(!e)throw new RangeError(h.t(a??"Prefix.gs1CompanyPrefixCantStartWith0"));s=Ar}break;case T.UPCCompanyPrefix:if(r.startsWith("0000"))throw new RangeError(h.t("Prefix.upcCompanyPrefixCantStartWith0000"));s=Or;break;case T.GS18Prefix:if(r.startsWith("0"))throw new RangeError(h.t("Prefix.gs18PrefixCantStartWith0"));s=Vr;break}i?o||zt.validate(r.substring(0,Math.min(s.minimumLength,r.length-1)),s):zt.validate(r,s)},normalize(n,e){this.validate(n,!0,!0,e);let t;switch(n){case T.GS1CompanyPrefix:t=e;break;case T.UPCCompanyPrefix:t=`0${e}`;break;case T.GS18Prefix:t=`00000${e}`;break}let r,i,o,a;return t.startsWith("0")?t.startsWith("00000")?(r=T.GS18Prefix,a=t.substring(5),i=a):(r=T.UPCCompanyPrefix,o=t.substring(1),i=o):(r=T.GS1CompanyPrefix,i=t),{prefixType:r,prefix:i,gs1CompanyPrefix:t,upcCompanyPrefix:o,gs18Prefix:a}}};var x={Numeric:"Numeric",AI82:"AI82",AI39:"AI39"};var l={GTIN:"GTIN",GLN:"GLN",SSCC:"SSCC",GRAI:"GRAI",GIAI:"GIAI",GSRN:"GSRN",GDTI:"GDTI",GINC:"GINC",GSIN:"GSIN",GCN:"GCN",CPID:"CPID",GMN:"GMN"};var G={None:"None",IndicatorDigit:"Indicator digit",ExtensionDigit:"Extension digit"};import{pick as wr}from"@aidc-toolkit/core";var B=wr(l,l.GTIN,l.GLN,l.SSCC,l.GRAI,l.GSRN,l.GDTI,l.GSIN,l.GCN);import{pick as kr}from"@aidc-toolkit/core";var Ee=kr(B,B.GTIN);import{exclude as $r}from"@aidc-toolkit/core";var F=$r(B,Ee);import{pick as jr}from"@aidc-toolkit/core";var De=jr(F,F.GLN,F.SSCC,F.GSRN,F.GSIN);import{exclude as _r}from"@aidc-toolkit/core";var Kt=_r(F,De);import{exclude as zr}from"@aidc-toolkit/core";var Bt=zr(l,B);import{omit as Fr}from"@aidc-toolkit/core";var N={GTIN13:13,GTIN12:12,GTIN8:8,GTIN14:14},J=Fr(N,"GTIN14"),Ut={[T.GS1CompanyPrefix]:N.GTIN13,[T.UPCCompanyPrefix]:N.GTIN12,[T.GS18Prefix]:N.GTIN8};function ie(n){return n.identifierType in B}function ne(n){return n.identifierType in Ee}function oe(n){return n.identifierType in F}function ae(n){return n.identifierType in De}function se(n){return n.identifierType in Kt}function fe(n){return n.identifierType in Bt}var Mr={identifierType:l.GTIN,prefixType:T.GS1CompanyPrefix,length:J.GTIN13,referenceCharacterSet:x.Numeric,leaderType:G.IndicatorDigit},Kr={identifierType:l.GTIN,prefixType:T.UPCCompanyPrefix,length:J.GTIN12,referenceCharacterSet:x.Numeric,leaderType:G.IndicatorDigit},Br={identifierType:l.GTIN,prefixType:T.GS18Prefix,length:J.GTIN8,referenceCharacterSet:x.Numeric,leaderType:G.IndicatorDigit},Ur={[J.GTIN13]:Mr,[J.GTIN12]:Kr,[J.GTIN8]:Br},Hr={identifierType:l.GLN,prefixType:T.GS1CompanyPrefix,length:13,referenceCharacterSet:x.Numeric,leaderType:G.None},Wr={identifierType:l.SSCC,prefixType:T.GS1CompanyPrefix,length:18,referenceCharacterSet:x.Numeric,leaderType:G.ExtensionDigit},Yr={identifierType:l.GRAI,prefixType:T.GS1CompanyPrefix,length:13,referenceCharacterSet:x.Numeric,leaderType:G.None,serialComponentLength:16,serialComponentCharacterSet:x.AI82},Jr={identifierType:l.GIAI,prefixType:T.GS1CompanyPrefix,length:30,referenceCharacterSet:x.AI82,requiresCheckCharacterPair:!1},Xr={identifierType:l.GSRN,prefixType:T.GS1CompanyPrefix,length:18,referenceCharacterSet:x.Numeric,leaderType:G.None},qr={identifierType:l.GDTI,prefixType:T.GS1CompanyPrefix,length:13,referenceCharacterSet:x.Numeric,leaderType:G.None,serialComponentLength:17,serialComponentCharacterSet:x.AI82},Zr={identifierType:l.GINC,prefixType:T.GS1CompanyPrefix,length:30,referenceCharacterSet:x.AI82,requiresCheckCharacterPair:!1},Qr={identifierType:l.GSIN,prefixType:T.GS1CompanyPrefix,length:17,referenceCharacterSet:x.Numeric,leaderType:G.None},ei={identifierType:l.GCN,prefixType:T.GS1CompanyPrefix,length:13,referenceCharacterSet:x.Numeric,leaderType:G.None,serialComponentLength:12,serialComponentCharacterSet:x.Numeric},ti={identifierType:l.CPID,prefixType:T.GS1CompanyPrefix,length:30,referenceCharacterSet:x.AI39,requiresCheckCharacterPair:!1},ri={identifierType:l.GMN,prefixType:T.GS1CompanyPrefix,length:25,referenceCharacterSet:x.AI82,requiresCheckCharacterPair:!0},M={[l.GTIN]:Ur,[l.GLN]:Hr,[l.SSCC]:Wr,[l.GRAI]:Yr,[l.GIAI]:Jr,[l.GSRN]:Xr,[l.GDTI]:qr,[l.GINC]:Zr,[l.GSIN]:Qr,[l.GCN]:ei,[l.CPID]:ti,[l.GMN]:ri};function Ht(n){return!("identifierType"in n)}function eo(n){return ie(n)}function to(n){return ne(n)}function ro(n){return oe(n)}function io(n){return ae(n)}function no(n){return se(n)}function oo(n){return fe(n)}import{NUMERIC_CREATOR as ii}from"@aidc-toolkit/utility";var Ae={[x.Numeric]:ii,[x.AI82]:Te,[x.AI39]:Qe};var de=class{#t;#e;#r;#i;constructor(e){this.#t=e.identifierType,this.#e=e.length,this.#r=e.referenceCharacterSet,this.#i=Ae[e.referenceCharacterSet]}get identifierType(){return this.#t}get prefixType(){return T.GS1CompanyPrefix}get length(){return this.#e}get referenceCharacterSet(){return this.#r}get referenceCreator(){return this.#i}padIdentifier(e,t){return t===void 0?e:this.referenceCreator.character(0).repeat(t).concat(e)}validatePrefix(e){W.validate(this.prefixType,!0,!1,e,!0,this.referenceCharacterSet===x.Numeric)}};var ce=class extends de{#t;#e;constructor(e){super(e),this.#t=e.leaderType,this.#e=+(this.leaderType===G.ExtensionDigit)}get leaderType(){return this.#t}validate(e,t){if(this.#e===0?super.validatePrefix(e):super.validatePrefix(e.substring(this.#e)),e.length!==this.length)throw new RangeError(h.t("Identifier.identifierTypeLength",{identifierType:this.identifierType,length:this.length}));if(!re(this.padIdentifier(e,t?.positionOffset)))throw new RangeError(h.t("Identifier.invalidCheckDigit"))}};import{NUMERIC_CREATOR as Wt}from"@aidc-toolkit/utility";var L={Any:0,RetailConsumer:1,OtherThanRetailConsumer:2},E=class n extends ce{static#t={minimumLength:0,maximumLength:1,component:()=>h.t("Identifier.indicatorDigit")};static#e={minimumLength:8,maximumLength:8};static#r={[L.Any]:void 0,[L.RetailConsumer]:"Identifier.invalidGTINAtRetail",[L.OtherThanRetailConsumer]:"Identifier.invalidGTINAtOtherThanRetail"};#i;constructor(e){let t=M.GTIN[e];super(t),this.#i=t.prefixType}get prefixType(){return this.#i}validatePrefix(e){W.validate(this.prefixType,!1,!1,e,!0,!0)}static zeroSuppress(e){ft.validate(e);let t=Array.from(e),r;if(t[0]==="0"&&t[6]==="0"&&t[7]==="0"&&(t[10]>="5"&&t[8]==="0"&&t[9]==="0"&&t[5]!=="0"?r=`0${t[1]}${t[2]}${t[3]}${t[4]}${t[5]}${t[10]}${t[11]}`:t[5]==="0"&&t[8]==="0"&&t[9]==="0"&&t[4]!=="0"?r=`0${t[1]}${t[2]}${t[3]}${t[4]}${t[10]}4${t[11]}`:t[3]<="2"&&t[4]==="0"&&t[5]==="0"?r=`0${t[1]}${t[2]}${t[8]}${t[9]}${t[10]}${t[3]}${t[11]}`:t[3]>="3"&&t[4]==="0"&&t[5]==="0"&&t[8]==="0"&&(r=`0${t[1]}${t[2]}${t[3]}${t[9]}${t[10]}3${t[11]}`)),r===void 0)throw new RangeError(h.t("Identifier.invalidZeroSuppressibleGTIN12"));return r}static zeroExpand(e){Wt.validate(e,n.#e);let t=Array.from(e),r;if(t[0]==="0"&&(t[6]>="5"&&t[5]!=="0"?r=`0${t[1]}${t[2]}${t[3]}${t[4]}${t[5]}0000${t[6]}${t[7]}`:t[6]==="4"&&t[4]!=="0"?r=`0${t[1]}${t[2]}${t[3]}${t[4]}00000${t[5]}${t[7]}`:t[6]<="2"?r=`0${t[1]}${t[2]}${t[6]}0000${t[3]}${t[4]}${t[5]}${t[7]}`:t[6]==="3"&&t[3]>="3"&&(r=`0${t[1]}${t[2]}${t[3]}00000${t[4]}${t[5]}${t[7]}`)),r===void 0)throw new RangeError(h.t("Identifier.invalidZeroSuppressedGTIN12"));return ft.validate(r),r}static convertToGTIN14(e,t){Wt.validate(e,n.#t);let r=n.normalize(t).padStart(N.GTIN14,"0");if(e.length!==0&&!r.startsWith(e)){let i=`${e}${r.substring(1,N.GTIN14-1)}`;r=`${i}${H(i)}`}return r}static normalize(e){let t=e.length,r;switch(t){case N.GTIN13:if(!e.startsWith("0"))r=e;else if(!e.startsWith("00000"))r=e.substring(1);else if(!e.startsWith("000000"))r=e.substring(5);else throw new RangeError(h.t("Identifier.invalidZeroSuppressedGTIN12AsGTIN13"));break;case N.GTIN12:r=e;break;case N.GTIN8:e.startsWith("0")?r=n.zeroExpand(e):r=e;break;case N.GTIN14:if(!e.startsWith("0"))r=e;else if(!e.startsWith("00"))r=e.substring(1);else if(!e.startsWith("000000"))r=e.substring(2);else if(!e.startsWith("0000000"))r=e.substring(6);else throw new RangeError(h.t("Identifier.invalidZeroSuppressedGTIN12AsGTIN14"));break;default:throw new RangeError(h.t("Identifier.invalidGTINLength"))}return n.validateAny(r),r}static validateAny(e,t=L.Any){let r=e,i,o=!1,a=!1,s=e,f;switch(e.length){case N.GTIN13:i=T.GS1CompanyPrefix,o=t!==L.RetailConsumer,a=t===L.Any,f=L.Any;break;case N.GTIN12:i=T.UPCCompanyPrefix,f=L.Any;break;case N.GTIN8:e.startsWith("0")?(r=n.zeroExpand(e),i=void 0):i=T.GS18Prefix,f=L.RetailConsumer;break;case N.GTIN14:i=T.GS1CompanyPrefix,o=!0,a=t!==L.OtherThanRetailConsumer||!e.startsWith("0"),s=e.substring(1),f=L.OtherThanRetailConsumer;break;default:throw new RangeError(h.t("Identifier.invalidGTINLength"))}if(i!==void 0&&W.validate(i,o,a,s,!0,!0,n.#r[t]),!re(r))throw new RangeError(h.t("Identifier.invalidCheckDigit"));if(t!==L.Any&&f!==L.Any&&f!==t)throw new RangeError(h.t(t===L.RetailConsumer?"Identifier.invalidGTINAtRetail":"Identifier.invalidGTINAtOtherThanRetail"))}static validateGTIN14(e){if(e.length!==N.GTIN14)throw new RangeError(h.t("Identifier.invalidGTIN14Length"));n.validateAny(e)}},ni=new E(N.GTIN13),ft=new E(N.GTIN12),oi=new E(N.GTIN8),Yt={[N.GTIN13]:ni,[N.GTIN12]:ft,[N.GTIN8]:oi};var pe=class extends ce{};var O=class extends pe{constructor(e){super(M[e])}};var k=class extends pe{#t;#e;#r;#i;constructor(e){let t=M[e];super(t),this.#t=t.serialComponentLength,this.#e=t.serialComponentCharacterSet,this.#r={minimumLength:1,maximumLength:t.serialComponentLength,component:()=>h.t("Identifier.serialComponent")},this.#i=Ae[t.serialComponentCharacterSet]}get serialComponentLength(){return this.#t}get serialComponentCharacterSet(){return this.#e}get serialComponentValidation(){return this.#r}get serialComponentCreator(){return this.#i}validate(e,t){super.validate(e.substring(0,this.length),t),e.length>this.length&&this.serialComponentCreator.validate(e.substring(this.length),this.#r)}split(e,t){return this.validate(e,t),{baseIdentifier:e.substring(0,this.length),serialComponent:e.substring(this.length)}}};import{Exclusions as ai,RegExpValidator as si}from"@aidc-toolkit/utility";var V=class n extends de{static#t=new class extends si{createErrorMessage(e){return h.t("Identifier.referenceCantBeAllNumeric")}}(/\D/u);#e;constructor(e){let t=M[e];super(t),this.#e=t.requiresCheckCharacterPair}get requiresCheckCharacterPair(){return this.#e}validate(e,t){let r=this.requiresCheckCharacterPair?e.substring(0,e.length-2):e;if(super.validatePrefix(r),!this.requiresCheckCharacterPair)this.referenceCreator.validate(e,{maximumLength:this.length});else if(!_t(this.padIdentifier(e)))throw new RangeError(h.t("Identifier.invalidCheckCharacterPair"));t?.exclusion===ai.AllNumeric&&n.#t.validate(r)}};var fi=new O(l.GLN),di=new O(l.SSCC),ci=new k(l.GRAI),pi=new V(l.GIAI),li=new O(l.GSRN),ui=new k(l.GDTI),hi=new V(l.GINC),mi=new O(l.GSIN),gi=new k(l.GCN),Ii=new V(l.CPID),Ti=new V(l.GMN),ve={[l.GTIN]:Yt,[l.GLN]:fi,[l.SSCC]:di,[l.GRAI]:ci,[l.GIAI]:pi,[l.GSRN]:li,[l.GDTI]:ui,[l.GINC]:hi,[l.GSIN]:mi,[l.GCN]:gi,[l.CPID]:Ii,[l.GMN]:Ti},ta={GTIN:E,GLN:O,SSCC:O,GRAI:k,GIAI:V,GSRN:O,GDTI:k,GINC:V,GSIN:O,GCN:k,CPID:V,GMN:V};function ra(n){return Ht(n)}function Jt(n){return ie(n)}function ia(n){return ne(n)}function na(n){return oe(n)}function oa(n){return ae(n)}function aa(n){return se(n)}function sa(n){return fe(n)}var Xt="https://www.gs1.org/services/verified-by-gs1/results?";function la(n,e,t=void 0,r){let i,o;n===l.GTIN?(i=E.normalize(e),o=!0):(ve[n].validate(e),i=e,o=n===l.GLN);let a=n.toLowerCase();return{reference:o?`${Xt}${a}=${i}`:`${Xt}key=${i}&key_type=${a}`,text:t??e,details:r}}import{Exclusions as xi,NUMERIC_CREATOR as qt}from"@aidc-toolkit/utility";import{CharacterSetCreator as yi,Exclusions as Ni,NUMERIC_CREATOR as Ve}from"@aidc-toolkit/utility";function Oe(n){class e extends n{#t;#e;constructor(r,i,o,...a){super(...a),this.#t=r,this.#e=this.length-i.length-o}get prefixProvider(){return this.#t}get prefix(){return this.prefixProvider.gs1CompanyPrefix}get referenceLength(){return this.#e}}return e}function we(n){class e extends Oe(n){#t;#e=0n;constructor(r,i,...o){super(r,i,1,...o),this.#t=Number(yi.powerOf10(this.referenceLength))}get capacity(){return this.#t}get tweak(){return this.#e}set tweak(r){this.#e=r}#r(r){let i=this.leaderType===G.ExtensionDigit?r.substring(0,1)+this.prefix+r.substring(1):this.prefix+r;return i+H(i)}create(r,i=!1){return Ve.create(this.referenceLength,r,Ni.None,i?this.tweak:void 0,o=>this.#r(o))}static*createAllPartial(r,i,o,a,s){if(i===0)yield r+Ve.character(9-(s+9)%10);else{let f=i-1,d=s;if(o!==0)for(let p of Ve.characterSet)yield*e.createAllPartial(p+r,f,0,a,d),d+=o;else{let p=4-a;for(let c of Ve.characterSet)yield*e.createAllPartial(r+c,f,0,p,d),d+=a}}}createAll(){let r=this.leaderType===G.ExtensionDigit,i=this.prefix,o=this.length,a=this.referenceLength,s=3-2*((a+1-Number(r))%2);return{[Symbol.iterator](){return e.createAllPartial(i,a,r?3-2*o%2:0,s,Le(s===3,i))}}}}return e}var ke=class n extends we(E){static#t={minimumLength:1,maximumLength:1,component:()=>h.t("Identifier.indicatorDigit")};constructor(e,t){super(e,e.prefix,t)}get prefix(){return this.prefixProvider.prefix}createGTIN14(e,t,r=!1){return qt.validate(e,n.#t),qt.create(N.GTIN13-this.prefixProvider.gs1CompanyPrefix.length-1,t,xi.None,r?this.tweak:void 0,i=>{let o=e+this.prefixProvider.gs1CompanyPrefix+i;return o+H(o)})}};function $e(n){class e extends we(n){constructor(r,...i){super(r,r.gs1CompanyPrefix,...i)}}return e}var X=class extends $e(O){};import{mapIterable as Ci}from"@aidc-toolkit/utility";var le=class extends $e(k){#t(e,t){let r,i=this.serialComponentCreator,o=this.serialComponentValidation;function a(s){return i.validate(s,o),e+s}return typeof t!="object"?r=a(t):r=Ci(t,a),r}createSerialized(e,t,r){return this.#t(this.create(e,r),t)}concatenate(e,t){return this.validate(e),this.#t(e,t)}};import{mapIterable as Si}from"@aidc-toolkit/utility";var q=class extends Oe(V){#t;constructor(e,t){super(e,e.gs1CompanyPrefix,2*Number(M[t].requiresCheckCharacterPair),t),this.#t={minimumLength:1,maximumLength:this.referenceLength,component:()=>h.t("Identifier.reference")}}get referenceValidation(){return this.#t}create(e){let t,r=this.referenceCreator,i=this.referenceValidation,o=this.prefix,a=this.requiresCheckCharacterPair;function s(f){r.validate(f,i);let d=o+f;return a?d+it(d):d}return typeof e!="object"?t=s(e):t=Si(e,s),t}};var dt={GTIN:ke,GLN:X,SSCC:X,GRAI:le,GIAI:q,GSRN:X,GDTI:le,GINC:q,GSIN:X,GCN:le,CPID:q,GMN:q};function Zt(n){return ie(n)}function Ja(n){return ne(n)}function Xa(n){return oe(n)}function qa(n){return ae(n)}function Za(n){return se(n)}function Qa(n){return fe(n)}import{NUMERIC_CREATOR as je}from"@aidc-toolkit/utility";var Qt=class{static parseRCN(e,t){let r=e.length;if(t.length!==r)throw new RangeError(h.t("Identifier.invalidRCNLength"));let i=r===12||r===13,o=!0,a=!1,s="",f=!1,d="",p="";for(let c=0;i&&c<r;c++){let m=e.charAt(c),u=t.charAt(c);if(c===0)i=m==="2",o=u==="2";else if(r===13&&c===1)i=je.characterIndex(m)!==void 0,o=u===m;else if(c===r-1)i=m==="C";else switch(m){case"I":a||(i=s==="",a=!0,f=!1),s+=u;break;case"P":f||(i=d==="",f=!0,a=!1),d+=u;break;case"V":i=p==="",a=!1,f=!1,p=u;break;default:i=!1;break}}if(i&&=s!==""&&d!=="",!i)throw new RangeError(h.t("Identifier.invalidVariableMeasureRCNFormat"));if(!o)throw new RangeError(h.t("Identifier.invalidVariableMeasureRCNPrefix"));if(p!==""&&!jt(d,p))throw new RangeError(h.t("Identifier.invalidVariableMeasurePriceOrWeight"));if(!re(t))throw new RangeError(h.t("Identifier.invalidCheckDigit"));return{itemReference:Number(s),priceOrWeight:Number(d)}}static createRCN(e,t,r){let i=e.length,o=i===12||i===13,a="",s=!1,f="",d=0,p=!1,c="",m=0,u=!1,g=y=>y+a,C=y=>y+f,b=y=>y+c,D=y=>y+rt(c),S=y=>y+H(y),A=[g];for(let y=0;o&&y<i;y++){let P=e.charAt(y);if(y===0)o=P==="2",a=P;else if(i===13&&y===1)o=je.characterIndex(P)!==void 0,a+=P;else if(y===i-1)o=P==="C";else switch(P){case"I":s||(o=d===0,s=!0,p=!1,A.push(C)),d++;break;case"P":p||(o=m===0,p=!0,s=!1,A.push(b)),m++;break;case"V":o=!u,s=!1,p=!1,u=!0,A.push(D);break;default:o=!1;break}}if(o&&=d!==0&&m!==0,!o)throw new RangeError(h.t("Identifier.invalidVariableMeasureRCNFormat"));return f=je.create(d,t),c=je.create(m,r),A.push(S),A.reduce((y,P)=>P(y),"")}};var er=class n{static#t=new Map;static#e={GTIN:1987n,GLN:4241n,SSCC:8087n,GRAI:3221n,GSRN:2341n,GDTI:7333n,GSIN:5623n,GCN:6869n};#r;#i;#n;#a;#s;#f;#o=0n;#d={};constructor(e,t){let r=W.normalize(e,t);this.#r=r.prefixType,this.#i=r.prefix,this.#n=r.gs1CompanyPrefix,this.#a=r.upcCompanyPrefix,this.#s=r.gs18Prefix,this.#f=BigInt(`1${this.gs1CompanyPrefix}`),this.resetTweakFactor()}get prefixType(){return this.#r}get prefix(){return this.#i}get gs1CompanyPrefix(){return this.#n}get upcCompanyPrefix(){return this.#a}get gs18Prefix(){return this.#s}#c(e){Zt(e)&&(e.tweak=this.tweakFactor*n.#e[e.identifierType])}get tweakFactor(){return this.#o}set tweakFactor(e){let t=BigInt(e);if(this.#o!==t){this.#o=t;for(let r of Object.values(this.#d))this.#c(r)}}resetTweakFactor(){this.tweakFactor=this.#f}static get(e,t){let r=W.normalize(e,t),i=n.#t.get(r.gs1CompanyPrefix);return i===void 0&&(i=new n(r.prefixType,r.prefix),n.#t.set(r.gs1CompanyPrefix,i)),i}getIdentifierCreator(e){let t=this.#d[e];if(t===void 0){if(e===l.GTIN)t=new dt.GTIN(this,Ut[this.prefixType]);else{if(this.prefixType===T.GS18Prefix)throw new RangeError(h.t("Prefix.identifierTypeNotSupportedByGS18Prefix",{identifierType:e}));t=new dt[e](this,e)}this.#c(t),this.#d[e]=t}return t}get gtinCreator(){return this.getIdentifierCreator(l.GTIN)}get glnCreator(){return this.getIdentifierCreator(l.GLN)}get ssccCreator(){return this.getIdentifierCreator(l.SSCC)}get graiCreator(){return this.getIdentifierCreator(l.GRAI)}get giaiCreator(){return this.getIdentifierCreator(l.GIAI)}get gsrnCreator(){return this.getIdentifierCreator(l.GSRN)}get gdtiCreator(){return this.getIdentifierCreator(l.GDTI)}get gincCreator(){return this.getIdentifierCreator(l.GINC)}get gsinCreator(){return this.getIdentifierCreator(l.GSIN)}get gcnCreator(){return this.getIdentifierCreator(l.GCN)}get cpidCreator(){return this.getIdentifierCreator(l.CPID)}get gmnCreator(){return this.getIdentifierCreator(l.GMN)}};function _e(n){return typeof n=="object"&&"dateTime"in n&&n.dateTime instanceof Date&&"disclaimer"in n&&typeof n.disclaimer=="string"}function ct(n){return _e(n)&&"data"in n&&n.data instanceof Uint8Array}function tr(n){return typeof n=="object"&&"nextCheckDateTime"in n&&n.nextCheckDateTime instanceof Date&&(!("gcpLengthData"in n)||n.gcpLengthData===void 0||typeof n.gcpLengthData=="object"&&n.gcpLengthData!==null&&ct(n.gcpLengthData))}function ls(n){return typeof n=="object"&&"_disclaimer"in n&&"GCPPrefixFormatList"in n}import{Cache as Gi,omit as Pi,RemoteAppDataStorage as bi,WEBSITE_BASE_URL as Ri}from"@aidc-toolkit/core";var pt=class n extends Gi{static APP_DATA_STORAGE_KEY="gcp-length";static NEXT_CHECK_DATE_TIME_STORAGE_KEY="gcp-length-next-check-date-time";static HEADER_STORAGE_KEY="gcp-length-header";static DATA_STORAGE_KEY="gcp-length-data";#t;#e;constructor(e){super(),this.#t=e}get appDataStorage(){return this.#t}async#r(){if(this.#e===void 0)if(this.appDataStorage.supportsBinary){let e=await this.appDataStorage.read(n.NEXT_CHECK_DATE_TIME_STORAGE_KEY),t=await this.appDataStorage.read(n.HEADER_STORAGE_KEY),r=await this.appDataStorage.read(n.DATA_STORAGE_KEY,!0);this.#e={nextCheckDateTime:e instanceof Date?e:void 0,gcpLengthData:_e(t)&&r instanceof Uint8Array?{...t,data:r}:void 0}}else{let e=await this.appDataStorage.read(n.APP_DATA_STORAGE_KEY);tr(e)&&(this.#e=e)}return this.#e===void 0&&(this.#e={nextCheckDateTime:new Date,gcpLengthData:void 0}),this.#e}get nextCheckDateTime(){return this.#r().then(e=>e.nextCheckDateTime)}get cacheDateTime(){return this.#r().then(e=>e.gcpLengthData?.dateTime)}get cacheData(){return this.#r().then(e=>{if(e.gcpLengthData===void 0)throw new Error("GS1 Company Prefix length application data not loaded");return e.gcpLengthData})}async update(e,t,r){this.#e={nextCheckDateTime:e,gcpLengthData:r??this.#e?.gcpLengthData},this.appDataStorage.supportsBinary?(await this.appDataStorage.write(n.NEXT_CHECK_DATE_TIME_STORAGE_KEY,e),r!==void 0&&(await this.appDataStorage.write(n.HEADER_STORAGE_KEY,Pi(r,"data")),await this.appDataStorage.write(n.DATA_STORAGE_KEY,r.data))):await this.appDataStorage.write(n.APP_DATA_STORAGE_KEY,this.#e)}},rr=class n extends pt{static DEFAULT_BASE_URL=`${Ri}/data`;#t;#e;constructor(e,t=n.DEFAULT_BASE_URL){super(e),this.#t=new bi(t)}async#r(e,t,r){return this.#t.read(e,t).then(i=>{if(i===void 0)throw new RangeError(h.t("GCPLength.gs1CompanyPrefixLengthDataFileNotFound",{key:e}));return r(i)}).catch(async i=>{let o=new Date;throw o.setMinutes(o.getMinutes()+10),await this.update(o),i})}get sourceDateTime(){return this.#r(n.HEADER_STORAGE_KEY,!1,e=>{if(!_e(e))throw new Error("Invalid GS1 Company Prefix length header");return this.#e=e,this.#e.dateTime})}get sourceData(){return this.#r(n.DATA_STORAGE_KEY,!0,e=>{let t=this.#e;if(t===void 0)throw new Error("GS1 Company Prefix length header not loaded");if(!(e instanceof Uint8Array))throw new Error("Invalid GS1 Company Prefix length data");return{...t,data:e}})}};import{omit as ir}from"@aidc-toolkit/core";function ze(n){return"length"in n}var nr=class n{static#t=15;static#e=14;#r;#i;constructor(e){this.#r=e}get root(){if(this.#i===void 0)throw new RangeError(h.t("GCPLength.gs1CompanyPrefixLengthDataNotLoaded"));return this.#i}get dateTime(){return this.root.dateTime}get disclaimer(){return this.root.disclaimer}static#n(e,t,r){let i=r,o=new Array(10);for(let a=0;a<10;a+=2){let s=e[i++];o[a]=s>>4,o[a+1]=s&15}for(let a=0;a<10;a++){let s=o[a];if(s!==n.#t){let f;if(s===n.#e){let d=[];i=n.#n(e,d,i),f={childNodes:d}}else f={length:s};t[a]=f}}return i}static#a(e,t,r){let i=Number(t.charAt(0)),o=e.childNodes[i],a=0;if(t.length!==1){let s;if(o===void 0)s={childNodes:[]},a++;else{if(ze(o))throw new Error("Overlapping entry");s=o}e.childNodes[i]=s,a+=n.#a(s,t.substring(1),r)}else{if(o!==void 0)throw new Error("Duplicate entry");e.childNodes[i]={length:r}}return a}static#s(e){return e!==void 0?ze(e)?e.length:n.#e:n.#t}static#f(e,t,r){let i=r,o=t.childNodes;for(let a=0;a<10;a+=2)e[i++]=n.#s(o[a])<<4|n.#s(o[a+1]);for(let a of o)a!==void 0&&!ze(a)&&(i=n.#f(e,a,i));return i}static#o(e,t){let r=new Date(e);return r.setDate(r.getDate()+t),r}async load(){let e,t=this.#r,r=await t.nextCheckDateTime,i=await t.cacheDateTime,o=new Date,a=n.#o(o,1);if(r===void 0||r.getTime()<=o.getTime()){let s=await t.sourceDateTime;if(i===void 0||i.getTime()<s.getTime()){let f=await t.sourceData,d;if(ct(f)){let p=[];n.#n(f.data,p,0),e={dateTime:f.dateTime,disclaimer:f.disclaimer,childNodes:p},d=f}else{let p={childNodes:[]},c=1;for(let u of f.GCPPrefixFormatList.entry)c+=n.#a(p,u.prefix,u.gcpLength);e={dateTime:new Date(f.GCPPrefixFormatList.date),disclaimer:`${f._disclaimer.reduce((u,g)=>(u.length===0||u[u.length-1]===""||g===""?u.push(g):u.push(`${u.pop()} ${g}`),u),[]).join(`
|
|
2
|
+
`)}
|
|
3
|
+
`,...p};let m=new Uint8Array(c*5);n.#f(m,e,0),d={...ir(e,"childNodes"),data:m}}r=n.#o(s,7),r.getTime()<a.getTime()&&(r=a),i=s,await t.update(r,i,d)}else await t.update(a)}if(e===void 0&&i!==void 0){let s=await t.cacheData,f=[];n.#n(s.data,f,0),e={...ir(s,"data"),childNodes:f}}e!==void 0&&(this.#i=e)}lengthOf(e,t){let r;if(e===l.GTIN)r=E.normalize(t).padStart(N.GTIN14,"0").substring(1);else{let a=ve[e];a.validate(t),r=!Jt(a)||a.leaderType!==G.ExtensionDigit?t:t.substring(1)}let i=this.root,o=0;for(;i!==void 0&&!ze(i);)i=i.childNodes[Number(r.charAt(o++))];return i?.length??-1}};export{Qe as AI39_CREATOR,tn as AI39_VALIDATOR,rn as AI64_VALIDATOR,Te as AI82_CREATOR,en as AI82_VALIDATOR,x as ContentCharacterSets,nr as GCPLength,pt as GCPLengthCache,J as GTINBaseLengths,ke as GTINCreator,N as GTINLengths,L as GTINLevels,Ee as GTINTypes,E as GTINValidator,Ut as GTIN_BASE_TYPES,dt as IdentifierCreatorConstructors,M as IdentifierDescriptors,l as IdentifierTypes,de as IdentifierValidator,ta as IdentifierValidatorConstructors,ve as IdentifierValidators,G as LeaderTypes,F as NonGTINNumericIdentifierTypes,pe as NonGTINNumericIdentifierValidator,q as NonNumericIdentifierCreator,Bt as NonNumericIdentifierTypes,V as NonNumericIdentifierValidator,X as NonSerializableNumericIdentifierCreator,De as NonSerializableNumericIdentifierTypes,O as NonSerializableNumericIdentifierValidator,B as NumericIdentifierTypes,ce as NumericIdentifierValidator,er as PrefixManager,T as PrefixTypes,W as PrefixValidator,rr as RemoteGCPLengthCache,le as SerializableNumericIdentifierCreator,Kt as SerializableNumericIdentifierTypes,k as SerializableNumericIdentifierValidator,Qt as VariableMeasure,it as checkCharacterPair,H as checkDigit,Le as checkDigitSum,Pr as gs1NS,br as gs1ResourceBundle,_t as hasValidCheckCharacterPair,re as hasValidCheckDigit,Xi as i18nGS1Init,h as i18nextGS1,tr as isGCPLengthAppData,ct as isGCPLengthData,_e as isGCPLengthHeader,ls as isGCPLengthSourceJSON,Ja as isGTINCreator,to as isGTINDescriptor,Ht as isGTINDescriptors,ia as isGTINValidator,ra as isGTINValidators,Xa as isNonGTINNumericIdentifierCreator,ro as isNonGTINNumericIdentifierDescriptor,na as isNonGTINNumericIdentifierValidator,Qa as isNonNumericIdentifierCreator,oo as isNonNumericIdentifierDescriptor,sa as isNonNumericIdentifierValidator,qa as isNonSerializableNumericIdentifierCreator,io as isNonSerializableNumericIdentifierDescriptor,oa as isNonSerializableNumericIdentifierValidator,Zt as isNumericIdentifierCreator,eo as isNumericIdentifierDescriptor,Jt as isNumericIdentifierValidator,Za as isSerializableNumericIdentifierCreator,no as isSerializableNumericIdentifierDescriptor,aa as isSerializableNumericIdentifierValidator,jt as isValidPriceOrWeightCheckDigit,rt as priceOrWeightCheckDigit,la as verifiedByGS1};
|
|
1
4
|
/*!
|
|
2
5
|
* Copyright © 2024-2026 Dolphin Data Development Ltd. and AIDC Toolkit
|
|
3
6
|
* contributors
|
|
@@ -14,39 +17,3 @@
|
|
|
14
17
|
* See the License for the specific language governing permissions and
|
|
15
18
|
* limitations under the License.
|
|
16
19
|
*/
|
|
17
|
-
export * from "./locale/i18n.js";
|
|
18
|
-
export * from "./character-set.js";
|
|
19
|
-
export * from "./check.js";
|
|
20
|
-
export * from "./prefix-type.js";
|
|
21
|
-
export * from "./prefix-validator.js";
|
|
22
|
-
export * from "./content-character-set.js";
|
|
23
|
-
export * from "./identifier-type.js";
|
|
24
|
-
export * from "./leader-type.js";
|
|
25
|
-
export * from "./numeric-identifier-type.js";
|
|
26
|
-
export * from "./gtin-type.js";
|
|
27
|
-
export * from "./non-gtin-numeric-identifier-type.js";
|
|
28
|
-
export * from "./non-serializable-numeric-identifier-type.js";
|
|
29
|
-
export * from "./serializable-numeric-identifier-type.js";
|
|
30
|
-
export * from "./non-numeric-identifier-type.js";
|
|
31
|
-
export * from "./gtin-length.js";
|
|
32
|
-
export * from "./identifier-descriptors.js";
|
|
33
|
-
export * from "./identifier-validator.js";
|
|
34
|
-
export * from "./numeric-identifier-validator.js";
|
|
35
|
-
export { GTINLevels, GTINValidator } from "./gtin-validator.js";
|
|
36
|
-
export * from "./non-gtin-numeric-identifier-validator.js";
|
|
37
|
-
export * from "./non-serializable-numeric-identifier-validator.js";
|
|
38
|
-
export * from "./serializable-numeric-identifier-validator.js";
|
|
39
|
-
export * from "./non-numeric-identifier-validator.js";
|
|
40
|
-
export * from "./identifier-validators.js";
|
|
41
|
-
export * from "./verified-by-gs1.js";
|
|
42
|
-
export * from "./gtin-creator.js";
|
|
43
|
-
export * from "./non-serializable-numeric-identifier-creator.js";
|
|
44
|
-
export * from "./serializable-numeric-identifier-creator.js";
|
|
45
|
-
export * from "./non-numeric-identifier-creator.js";
|
|
46
|
-
export * from "./identifier-creators.js";
|
|
47
|
-
export * from "./variable-measure.js";
|
|
48
|
-
export * from "./prefix-manager.js";
|
|
49
|
-
export * from "./gcp-length-data.js";
|
|
50
|
-
export * from "./gcp-length-cache.js";
|
|
51
|
-
export * from "./gcp-length.js";
|
|
52
|
-
//# sourceMappingURL=index.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aidc-toolkit/gs1",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.43",
|
|
4
4
|
"description": "GS1 AIDC Toolkit",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,11 +29,11 @@
|
|
|
29
29
|
"test": "tsc --project tsconfig-test.json --noEmit && vitest run"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@aidc-toolkit/dev": "1.0.40
|
|
32
|
+
"@aidc-toolkit/dev": "^1.0.40",
|
|
33
33
|
"vitest": "^4.0.18"
|
|
34
34
|
},
|
|
35
35
|
"dependencies": {
|
|
36
|
-
"@aidc-toolkit/core": "1.0.41
|
|
37
|
-
"@aidc-toolkit/utility": "1.0.42
|
|
36
|
+
"@aidc-toolkit/core": "^1.0.41",
|
|
37
|
+
"@aidc-toolkit/utility": "^1.0.42"
|
|
38
38
|
}
|
|
39
39
|
}
|
package/src/gcp-length.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { omit } from "@aidc-toolkit/core";
|
|
2
2
|
import type { GCPLengthCache } from "./gcp-length-cache.js";
|
|
3
|
-
import { type GCPLengthData, isGCPLengthData } from "./gcp-length-data.js";
|
|
4
|
-
import * as GCPLengthTree from "./gcp-length-tree.js";
|
|
3
|
+
import { type GCPLengthData, type GCPLengthHeader, isGCPLengthData } from "./gcp-length-data.js";
|
|
5
4
|
import { GTINLengths } from "./gtin-length.js";
|
|
6
5
|
import { GTINValidator } from "./gtin-validator.js";
|
|
7
6
|
import { type IdentifierType, IdentifierTypes } from "./identifier-type.js";
|
|
@@ -9,11 +8,49 @@ import { IdentifierValidators, isNumericIdentifierValidator } from "./identifier
|
|
|
9
8
|
import { LeaderTypes } from "./leader-type.js";
|
|
10
9
|
import { i18nextGS1 } from "./locale/i18n.js";
|
|
11
10
|
|
|
11
|
+
/**
|
|
12
|
+
* Leaf of GS1 Company Prefix length tree.
|
|
13
|
+
*/
|
|
14
|
+
interface Leaf {
|
|
15
|
+
readonly length: number;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Branch of GS1 Company Prefix length tree.
|
|
20
|
+
*/
|
|
21
|
+
interface Branch {
|
|
22
|
+
readonly childNodes: ReadonlyArray<Node | undefined>;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Root of GS1 Company Prefix length tree.
|
|
27
|
+
*/
|
|
28
|
+
interface Root extends GCPLengthHeader, Branch {
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Node in GS1 Company Prefix length tree.
|
|
33
|
+
*/
|
|
34
|
+
type Node = Branch | Leaf;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Determine if a node is a leaf.
|
|
38
|
+
*
|
|
39
|
+
* @param node
|
|
40
|
+
* Node.
|
|
41
|
+
*
|
|
42
|
+
* @returns
|
|
43
|
+
* True if node is a leaf.
|
|
44
|
+
*/
|
|
45
|
+
function isLeaf(node: Node): node is Leaf {
|
|
46
|
+
return "length" in node;
|
|
47
|
+
}
|
|
48
|
+
|
|
12
49
|
/**
|
|
13
50
|
* Interim branch of GS1 Company Prefix length tree with writeable child nodes.
|
|
14
51
|
*/
|
|
15
52
|
export interface InterimBranch {
|
|
16
|
-
readonly childNodes: Array<InterimBranch |
|
|
53
|
+
readonly childNodes: Array<InterimBranch | Leaf | undefined>;
|
|
17
54
|
}
|
|
18
55
|
|
|
19
56
|
/**
|
|
@@ -58,7 +95,7 @@ export class GCPLength {
|
|
|
58
95
|
/**
|
|
59
96
|
* GS1 Company Prefix length tree root.
|
|
60
97
|
*/
|
|
61
|
-
#root?:
|
|
98
|
+
#root?: Root;
|
|
62
99
|
|
|
63
100
|
/**
|
|
64
101
|
* Constructor.
|
|
@@ -76,7 +113,7 @@ export class GCPLength {
|
|
|
76
113
|
* @returns
|
|
77
114
|
* GS1 Company Prefix length tree root.
|
|
78
115
|
*/
|
|
79
|
-
get root():
|
|
116
|
+
get root(): Root {
|
|
80
117
|
if (this.#root === undefined) {
|
|
81
118
|
throw new RangeError(i18nextGS1.t("GCPLength.gs1CompanyPrefixLengthDataNotLoaded"));
|
|
82
119
|
}
|
|
@@ -113,7 +150,7 @@ export class GCPLength {
|
|
|
113
150
|
* @returns
|
|
114
151
|
* End index into binary data array.
|
|
115
152
|
*/
|
|
116
|
-
static #fromBinary(binaryData: Uint8Array, childNodes: Array<
|
|
153
|
+
static #fromBinary(binaryData: Uint8Array, childNodes: Array<Node | undefined>, startIndex: number): number {
|
|
117
154
|
let endIndex = startIndex;
|
|
118
155
|
|
|
119
156
|
const decompressedLengths = new Array<number>(10);
|
|
@@ -130,10 +167,10 @@ export class GCPLength {
|
|
|
130
167
|
const length = decompressedLengths[childNodeIndex];
|
|
131
168
|
|
|
132
169
|
if (length !== GCPLength.#BINARY_UNDEFINED) {
|
|
133
|
-
let childNode:
|
|
170
|
+
let childNode: Node;
|
|
134
171
|
|
|
135
172
|
if (length === GCPLength.#BINARY_BRANCH) {
|
|
136
|
-
const childNodes: Array<
|
|
173
|
+
const childNodes: Array<Node | undefined> = [];
|
|
137
174
|
|
|
138
175
|
endIndex = GCPLength.#fromBinary(binaryData, childNodes, endIndex);
|
|
139
176
|
|
|
@@ -186,7 +223,7 @@ export class GCPLength {
|
|
|
186
223
|
|
|
187
224
|
branchesAdded++;
|
|
188
225
|
} else {
|
|
189
|
-
if (
|
|
226
|
+
if (isLeaf(existingChildNode)) {
|
|
190
227
|
// File format error or application bug; localization not necessary.
|
|
191
228
|
throw new Error("Overlapping entry");
|
|
192
229
|
}
|
|
@@ -224,8 +261,8 @@ export class GCPLength {
|
|
|
224
261
|
* @returns
|
|
225
262
|
* Child node length, 0x0E (branch), or 0x0F (undefined).
|
|
226
263
|
*/
|
|
227
|
-
static #childNodeValue(childNode:
|
|
228
|
-
return childNode !== undefined ?
|
|
264
|
+
static #childNodeValue(childNode: Node | undefined): number {
|
|
265
|
+
return childNode !== undefined ? isLeaf(childNode) ? childNode.length : GCPLength.#BINARY_BRANCH : GCPLength.#BINARY_UNDEFINED;
|
|
229
266
|
}
|
|
230
267
|
|
|
231
268
|
/**
|
|
@@ -243,7 +280,7 @@ export class GCPLength {
|
|
|
243
280
|
* @returns
|
|
244
281
|
* End index into binary data array.
|
|
245
282
|
*/
|
|
246
|
-
static #toBinary(binaryData: Uint8Array, branch:
|
|
283
|
+
static #toBinary(binaryData: Uint8Array, branch: Branch, startIndex: number): number {
|
|
247
284
|
let endIndex = startIndex;
|
|
248
285
|
|
|
249
286
|
const childNodes = branch.childNodes;
|
|
@@ -256,7 +293,7 @@ export class GCPLength {
|
|
|
256
293
|
|
|
257
294
|
// Process child nodes.
|
|
258
295
|
for (const childNode of childNodes) {
|
|
259
|
-
if (childNode !== undefined && !
|
|
296
|
+
if (childNode !== undefined && !isLeaf(childNode)) {
|
|
260
297
|
endIndex = GCPLength.#toBinary(binaryData, childNode, endIndex);
|
|
261
298
|
}
|
|
262
299
|
}
|
|
@@ -288,7 +325,7 @@ export class GCPLength {
|
|
|
288
325
|
* Load the GS1 Company Prefix length data.
|
|
289
326
|
*/
|
|
290
327
|
async load(): Promise<void> {
|
|
291
|
-
let root:
|
|
328
|
+
let root: Root | undefined = undefined;
|
|
292
329
|
|
|
293
330
|
const gcpLengthCache = this.#gcpLengthCache;
|
|
294
331
|
|
|
@@ -307,7 +344,7 @@ export class GCPLength {
|
|
|
307
344
|
let cacheData: GCPLengthData;
|
|
308
345
|
|
|
309
346
|
if (isGCPLengthData(sourceData)) {
|
|
310
|
-
const childNodes: Array<
|
|
347
|
+
const childNodes: Array<Node | undefined> = [];
|
|
311
348
|
|
|
312
349
|
GCPLength.#fromBinary(sourceData.data, childNodes, 0);
|
|
313
350
|
|
|
@@ -375,7 +412,7 @@ export class GCPLength {
|
|
|
375
412
|
if (root === undefined && cacheDateTime !== undefined) {
|
|
376
413
|
const cacheData = await gcpLengthCache.cacheData;
|
|
377
414
|
|
|
378
|
-
const childNodes: Array<
|
|
415
|
+
const childNodes: Array<Node | undefined> = [];
|
|
379
416
|
|
|
380
417
|
GCPLength.#fromBinary(cacheData.data, childNodes, 0);
|
|
381
418
|
|
|
@@ -417,12 +454,12 @@ export class GCPLength {
|
|
|
417
454
|
identifierPrefix = !isNumericIdentifierValidator(identifierValidator) || identifierValidator.leaderType !== LeaderTypes.ExtensionDigit ? identifier : identifier.substring(1);
|
|
418
455
|
}
|
|
419
456
|
|
|
420
|
-
let node:
|
|
457
|
+
let node: Node | undefined = this.root;
|
|
421
458
|
|
|
422
459
|
let digitIndex = 0;
|
|
423
460
|
|
|
424
461
|
// Traverse tree until exhausted or at a leaf.
|
|
425
|
-
while (node !== undefined && !
|
|
462
|
+
while (node !== undefined && !isLeaf(node)) {
|
|
426
463
|
node = node.childNodes[Number(identifierPrefix.charAt(digitIndex++))];
|
|
427
464
|
}
|
|
428
465
|
|
package/test/gcp-length.test.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { type AppDataStorage, LocalAppDataStorage } from "@aidc-toolkit/core";
|
|
|
2
2
|
import * as fs from "node:fs";
|
|
3
3
|
import * as path from "node:path";
|
|
4
4
|
import { afterAll, beforeAll, describe, expect, test } from "vitest";
|
|
5
|
-
import * as GCPLengthTree from "../src/gcp-length-tree.js";
|
|
6
5
|
import {
|
|
7
6
|
GCPLength,
|
|
8
7
|
GCPLengthCache,
|
|
@@ -102,22 +101,28 @@ const BINARY_2_HEADER_PATH = path.resolve(DATA_DIRECTORY, "gcp-length-header-2.j
|
|
|
102
101
|
|
|
103
102
|
const BINARY_2_DATA_PATH = path.resolve(DATA_DIRECTORY, "gcp-length-data-2.bin");
|
|
104
103
|
|
|
104
|
+
// Type Root is not exported.
|
|
105
|
+
type Root = GCPLength["root"];
|
|
106
|
+
|
|
107
|
+
// Type Node is not exported.
|
|
108
|
+
type Node = Root["childNodes"][number];
|
|
109
|
+
|
|
105
110
|
describe("GS1 Company Prefix length", () => {
|
|
106
|
-
function verifyEqual(prefix: string, node1:
|
|
111
|
+
function verifyEqual(prefix: string, node1: Node | undefined, node2: Node | undefined): void {
|
|
107
112
|
if (node1 !== undefined) {
|
|
108
113
|
if (node2 === undefined) {
|
|
109
114
|
throw new RangeError(`Prefix ${prefix}: node1 defined, node2 undefined`);
|
|
110
115
|
}
|
|
111
116
|
|
|
112
|
-
if (
|
|
113
|
-
if (!
|
|
117
|
+
if ("length" in node1) {
|
|
118
|
+
if (!("length" in node2)) {
|
|
114
119
|
throw new RangeError(`Prefix ${prefix}: node1 is leaf, node2 is branch`);
|
|
115
120
|
}
|
|
116
121
|
|
|
117
122
|
if (node1.length !== node2.length) {
|
|
118
123
|
throw new RangeError(`Prefix ${prefix}: node1.length = ${node1.length}, node2.length = ${node2.length}`);
|
|
119
124
|
}
|
|
120
|
-
} else if (!
|
|
125
|
+
} else if (!("length" in node2)) {
|
|
121
126
|
for (let index = 0; index < 10; index++) {
|
|
122
127
|
verifyEqual(`${prefix}${index}`, node1.childNodes[index], node2.childNodes[index]);
|
|
123
128
|
}
|
|
@@ -174,8 +179,8 @@ describe("GS1 Company Prefix length", () => {
|
|
|
174
179
|
const gcpLengthCacheBinary1Source = new GCPLengthCacheBinarySource(appDataStorage, 1);
|
|
175
180
|
const gcpLengthCacheBinary2Source = new GCPLengthCacheBinarySource(appDataStorage, 2);
|
|
176
181
|
|
|
177
|
-
let root1:
|
|
178
|
-
let root2:
|
|
182
|
+
let root1: Root | undefined;
|
|
183
|
+
let root2: Root | undefined;
|
|
179
184
|
let nextCheckDateTime: Date | undefined;
|
|
180
185
|
|
|
181
186
|
const gcpLengthJSON1Source = new GCPLength(gcpLengthCacheJSON1Source);
|